javascript - 函数作用域内复制

查看:89
本文介绍了javascript - 函数作用域内复制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

function funcArr(arr){
  var res = arr;
  res.pop();
  alert(arr === res);
}
funcArr([1,2,3])  // true
function funcNum(num){
  var res = num;
  res++;
  alert(num === res);
}
funcNum(3)      // false

在funcArr中复制了参数arr,函数体内res与arr一起变化(最后res=[1,2];num=[1,2]);
在funcArr中复制了参数num,函数体内res与num变化是独立的(最后res=4;num=3);

原因?

解决方案

javascript的函数参数传递都是值传递。

实际上第一个传进去的是数组的地址,所以对同一地址的数据进行修改必然能够改变传入参数数组的数据。

而第二个实际只传入值,所以对传入的参数不会有影响。

这篇关于javascript - 函数作用域内复制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆