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

javascript作用域问题

javascript作用域问题

牛魔王的故事 2018-09-05 09:26:28
PHP代码:<?php$key = [1,2];function add($key){     array_push($key,'dddss');     print_r($key); } add($key); print_r($key);输出Array (     [0] => 1     [1] => 2     [2] => dddss ) Array (     [0] => 1     [1] => 2)JS代码:var $key = [1,2]; function addkey($key){    let hello = $key;     hello.push(9)     console.log(hello)     console.log($key) } addkey($key) console.log($key)输出:[ 1, 2, 9 ] [ 1, 2, 9 ] [ 1, 2, 9 ]我想要的是函数内的处理不影响函数外,也就是类似于PHP的结果,也想知道什么原因
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

let hello = $key.slice();

你的函数参数是一个数组,而数组在js中是按照引用来传递的。。你在函数内部使用let 将一个数组的引用赋值给另一个变量的时候。实际上,hello和$key都同时指向了一个值,在这里就是length为2的数组。所以你对任何一个变量做push或者其他操作的时候,改变的其实是两个变量同时指向的那个值。


查看完整回答
反对 回复 2018-10-28
  • 1 回答
  • 0 关注
  • 517 浏览
慕课专栏
更多

添加回答

举报

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