變量的作用域,初始化以及在javascript函數內部和外部如何使用?我已經寫了下面的代碼:如何在JavaScript中的函數對象內部進行變量內存分配?
<div id="output">
</div>
<script>
var calculator = function()
{
var x = 5;
getx = function(){
return x;
}
return { x:x, getx };
}();
document.getElementById("output").innerHTML = calculator.x;
calculator.x=10;
document.getElementById("output").innerHTML += " "+ calculator.x + " "+calculator.getx();
</script>
我讀到,在JS執行,代碼首先掃描所有的變量聲明,然後功能被執行。
在計算器對象內部定義的var x是值類型的整數。
getx是嵌套函數,並且根據閉包,即使在執行getx返回後,也可以訪問變量「x」。
爲calculator.x首先輸出作爲expected=5;
爲calculator.x第二輸出是作爲expected=10;
(如x被修改)
爲calculator.getx()
第三輸出爲= 5; (我無法理解)
「x」是值類型,它也應該在函數範圍內修改值,第三個輸出應該是= 10。我在這裏錯過了什麼?
什麼是預期的結果,而不是財產被改變? – guest271314
10,因爲我已經提到在最後 – maverick
'x'在'calculator'內的'5'立即調用函數 – guest271314