是参数没传进去?还是函数没执行呀?

function fun(a,b){
          var temp;
          temp=a;
          a=b;
          b=temp;
        }
        var x=0,y=5;
        fun(x,y);
        console.log(x);//0
阅读 2.5k
3 个回答

问题其他答案已经说的很清楚了,函数的参数是值传递,函数中的 ab 只是函数内部参数,和外部的 xy 无关,不会影响外部变量的值。

要交换两个变量的值,利用 ES6 的解构赋值,只需要一行:

[ x, y ] = [ y, x ];

执行了,但并不会影响 x 的值,x 只是传了一个值进去,这并不会改变 x 本身

都不是,是参数没传出来。

你要知道:Javascript 的参数传递采用的是值传递机制,即传递参数时会将值拷贝,而不是传入变量本身。因此你在函数内对参数做出的修改不会扩散到外面来。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题