先引用原文调用函数时,传递给函数的值被称为函数的实参(值传递),对应位置的函数参数名叫作形参。如果实参是一个包含原始值(数字,字符串,布尔值)的变量,则就算函数在内部改变了对应形参的值,返回后,该实参变量的值也不会改变。如果实参是一个对象引用,则对应形参会和该实参指向同一个对象。假如函数在内部改变了对应形参的值,返回后,实参指向的对象的值也会改变:为了验证,我写了下面的代码: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 的值并没有变化,这是为什么呢?难道原文有错?
添加回答
举报
0/150
提交
取消