js函数问题

 var ary=[1,2,3,4];
    function fn(ary){
        ary[0]=0;
        ary=[0];
        ary[0]=100;
        return ary;
    }
    var res=fn(ary);//请问当把函数给res的时候开辟新空间了吗?还是指向函数定义时的那个空间?
    console.log(ary);
    console.log(res);
阅读 1.5k
2 个回答
var ary=[1,2,3,4];
    function fn(ary){
        ary[0]=0;//操作引用
        ary=[0];//指向新对象
        ary[0]=100;//修改新对象
        return ary;
    }
    var res=fn(ary);//请问当把函数给res的时候开辟新空间了吗?还是指向函数定义时的那个空间?
    console.log(ary);//传递了引用
    console.log(res);

函数也是对象,对象是引用数据类型,在赋值的时候传递的是引用值,相当于地址。

 var res=fn;//把函数的引用指向res 变量
  
  //提问中 
  var res = fn(ary)//  fn(ary) 相当一个表达式,求出结果后赋给 res
  //所以 res 指向的应该是 return 语句返回的 数组ary的引用
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题