關(guān)于引用的理解
引用類型 是對 復(fù)雜數(shù)據(jù)類型而言的
有了好的想法再來添加
下面看 代碼一
var arr = [1,2,3];
function f1(a){
a = [11,22,33];
}
console.log(arr); //[1,2,3]
f1(arr);
console.log(arr); //[1,2,3]
這里為什么沒有變化呢脑奠?
function f1() { a = [11,22,33]} 是把 arr = [1,2,3];的引用的地址改變了,所以不會改變原 arr 的內(nèi)容
代碼二
var arr = [1,2,3];
function f2(a){
a[0] = 'a';
}
console.log(arr); //[1,2,3]
f2(arr);
console.log(arr); //["a",2,3]
這里為什么改變了?
function f1 () { a[0] = 'a'} 是是把a(bǔ)rr = [1,2,3]的引用復(fù)制給了a,然后又在引用的對象里做了修改
現(xiàn)在就好比兩個人都有了 一個房間的鑰匙 一個人進(jìn)去 把沙發(fā) 挪動了苟翻,另一個人進(jìn)來時 沙發(fā)是挪動后的位置 也就是對象內(nèi)容被改變了
代碼三
var num = 1;
function f3(a){
a = 3;
}
console.log(num); // 1
f3(num);
console.log(num); // 1
這里也沒有變化相寇!為什么呢狭吼?
因?yàn)橐妙愋褪?針對復(fù)雜的數(shù)據(jù)類型而言的 比如對象類型的數(shù)據(jù)
數(shù)字是基本類型 不存在什么引用 函數(shù)內(nèi)部變量 由形參拷貝 外部變量 進(jìn)去 改變賦值 但外部變量并沒有改變