为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript在函数内修改实参值的结论验证出错?

JavaScript在函数内修改实参值的结论验证出错?

慕婉清6462132 2019-03-13 18:15:05
先引用原文调用函数时,传递给函数的值被称为函数的实参(值传递),对应位置的函数参数名叫作形参。如果实参是一个包含原始值(数字,字符串,布尔值)的变量,则就算函数在内部改变了对应形参的值,返回后,该实参变量的值也不会改变。如果实参是一个对象引用,则对应形参会和该实参指向同一个对象。假如函数在内部改变了对应形参的值,返回后,实参指向的对象的值也会改变:为了验证,我写了下面的代码:var x=1,y=2; // x, y 是存储了基本类型的变量var i=new String("1"), j = new String("2"); // i,j 是存储了引用类型的变量console.log("x="+x+",y="+y);function fnTest(a,b){    a=a*2;    b=b*4;    return a+b;}console.log("function result="+ fnTest(x,y));console.log("x="+x+",y="+y); console.log("typeof x="+typeof(x) + ",typeof y="+typeof(y));console.log("function result="+ fnTest(i,j));console.log("i="+i+",j="+j); console.log("typeof i="+typeof(i) + ",typeof j="+typeof(j));输出:x=1,y=2myJavaScript.js:28 typeof x=number,typeof y=numbermyJavaScript.js:29 i=1,j=2myJavaScript.js:30 typeof i=object,typeof j=objectmyJavaScript.js:36 function result=10myJavaScript.js:37 x=1,y=2myJavaScript.js:38 typeof x=number,typeof y=numbermyJavaScript.js:39 function result=10myJavaScript.js:40 i=1,j=2myJavaScript.js:41 typeof i=object,typeof j=object可以看到,存储引用类型的 i,j 的值并没有变化,这是为什么呢?难道原文有错?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 545 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信