引用型的参数this指向哪

  var a=[1,2,3]

     var add=function (arr) {

          arr.splice(0,1)

      }

      add(a)

      console.log(a) //[2,3]

      

     var add1=function (arr) {

          arr="1"

      }

      add1(a)

      console.log(a)  //[2,3]

这是为何.. 参数如果是切断this指向复制一个新值 那arr.spice(0,1)就不会改变 

如果是指向引用 那arr="1" console.log()出来的应该是1?


慕雪6442864
浏览 421回答 1
1回答

蓝山帝景

题主同意的答案明显有错误,JS的函数参数是分按值传递和传址传递的,如果都是传值传递,那么结果就得像PHP一样,什么都不会有改动,就算用了 splice 。(顺便一提在php中需要使用&用作引用传递)只不过如果传递的是复合类型,如果函数内部修改的,不是参数对象的某个属性,而是替换掉整个参数,这时不会影响到原始值。var add1=function (arr) {        arr="1"}add1(a)这里在函数add1()可以看作:// 把参数赋值给形参arr = a;// 又赋值给了 1arr = '1'这里当然没有被修改。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript