變數:
var int = 1;
function addInt (int) {
int += 1;
}
addInt(int);
console.log(int); //印出1; 變數的值 不受函式內的變動所影響
物件:
var obj = {int: 1};
function addObj (obj) {
obj.int += 1;
}
addObj(obj);
console.log(obj.int); //印出2; 物件的值被函式內的變懂影響了
PS.
網友Yang大提到,function內找不到的變數時,會去找 global (全域) 的變數,也就是說
var int = 1;
function add () {
int += 1;
}
add();
console.log(int); //會印出2; 因為function內沒有定義int,所以就會去找 global 的 int 了。
function的scope找不到int,會往外找到global的int喔
ReplyDeleteaddInt(int){int += 1;}才會用local的int
另外JS中用=operator來assign給variables時,它們會指向同一個物件,類似C的pointer,才會有第二個情況
addint(int) 誤植為 addint(i) 謝謝提醒 :) 內文已修正
Delete