鍍金池/ 問(wèn)答/HTML/ js函數(shù)問(wèn)題

js函數(shù)問(wèn)題

 var ary=[1,2,3,4];
    function fn(ary){
        ary[0]=0;
        ary=[0];
        ary[0]=100;
        return ary;
    }
    var res=fn(ary);//請(qǐng)問(wèn)當(dāng)把函數(shù)給res的時(shí)候開(kāi)辟新空間了嗎?還是指向函數(shù)定義時(shí)的那個(gè)空間?
    console.log(ary);
    console.log(res);
回答
編輯回答
冷溫柔

函數(shù)也是對(duì)象,對(duì)象是引用數(shù)據(jù)類(lèi)型,在賦值的時(shí)候傳遞的是引用值,相當(dāng)于地址。

 var res=fn;//把函數(shù)的引用指向res 變量
  
  //提問(wèn)中 
  var res = fn(ary)//  fn(ary) 相當(dāng)一個(gè)表達(dá)式,求出結(jié)果后賦給 res
  //所以 res 指向的應(yīng)該是 return 語(yǔ)句返回的 數(shù)組ary的引用
2017年2月26日 14:58
編輯回答
鹿惑
var ary=[1,2,3,4];
    function fn(ary){
        ary[0]=0;//操作引用
        ary=[0];//指向新對(duì)象
        ary[0]=100;//修改新對(duì)象
        return ary;
    }
    var res=fn(ary);//請(qǐng)問(wèn)當(dāng)把函數(shù)給res的時(shí)候開(kāi)辟新空間了嗎?還是指向函數(shù)定義時(shí)的那個(gè)空間?
    console.log(ary);//傳遞了引用
    console.log(res);
2017年1月25日 03:35