我剛剛閱讀了關於'設置函數內部全局變量'的question的答案,但我仍然有疑問。函數參數作爲局部變量名稱的數字
這可能是非常基本的,但有人可以告訴我爲什麼當我這樣做時不會出現錯誤?我明白什麼是傳遞給函數的變量i的值的副本,但是......爲什麼
var i = 5;
function exp(i) {
i = 7;
console.log(i);
}
exp(i);
//logs 7
或
function exp(i) {
return i = 7;
console.log(i);
}
exp(5)
//logs 7
和:
function exp() {
return 5 = 7; //or console.log(5 = 7);
}
exp()//Uncaught ReferenceError: Invalid left-hand side in assignment
在第一個例子是我沒有使5 = 7?爲什麼函數記錄'7'?
這一切都來到了我已經看到了這個例子中的精彩JavaScript Garden局部變量之後:
// global scope
var foo = 1;
var bar = 2;
var i = 2;
function test(i) {
// local scope of the function test
i = 5;
var foo = 3;
bar = 4;
}
test(10);
爲什麼測試(10),設置10 = 5裏面的功能不犯錯誤?
你都賺不到5 = 7,你的設定值7〜variabile的我。如果你做「返回i == 7」,那麼它返回5 == 7,因此是錯誤的。 –
但是,如果是這樣的話,我會將全局變量i改爲7,而事實並非如此。變量我仍然是5(在第一個例子中) – viery365
可能重複[JavaScript是傳遞引用還是傳值語言?](http://stackoverflow.com/questions/518000/is- javascript-a-pass-by-reference-or-pass-by-value-language) – 4castle