传递给函数的变量仅在函数内更改
Variable passed into function only changed within function
我创建了一个简单的函数,我注意到javascript有一些意想不到的东西。当我将变量传递给函数然后更改它时,它不会在该函数之外更改。下面是一些代码:
function check(val, isEven) {
if (val % 2 === 0){
isEven++;
console.log('incremented isEven is ', isEven);
}
}
var arr = [1, 2, 3, 4, 5, 6, 7, 8];
var isEven = 0;
for (var x = 0; x < arr.length; x++) {
check(arr[x], isEven);
console.log('isEven is now ', isEven);
}
小提琴来了。
也许这些年来我一直在误解Javascript,但我本以为check()
中的isEven
与原始isEven
相同.....但是您可以在日志中看到,外部isEven
保持为 0....
在 JavaScript 中,通过复制对对象的引用来传递对象。基元类型(字符串/数字/等)按值传递。
这意味着,如果您传入一个对象,修改函数中的对象将反映在函数外部,因为内部和外部都将引用同一对象。
对于基元类型,变量在传入时被复制,函数内部的更改将不再反映在函数外部的变量中。
相关文章:
- 访问嵌套函数结构中的JavaScript父函数变量
- Javascript函数变量传递语法问题
- JavaScript 函数变量范围问题
- 在 promise 中获取构造函数变量
- 将函数结果传递给Javascript中的另一个函数变量
- 用对象设置函数变量's值
- Javascript函数变量应生成错误,而不是未定义的错误
- 我可以访问用户脚本中的匿名函数变量吗?
- 在实例化期间使用构造函数变量
- 为什么在 JavaScript 中不能用函数变量覆盖字符串变量
- JavaScript 允许调用函数访问调用函数变量
- 如何在嵌套原型中访问 JavaScript 构造函数变量
- 对函数变量的 JavaScript 控制台日志输出感到困惑
- 如何将函数变量传递给主干模型上的 jQuery 事件
- 如何访问构造函数变量
- 实例函数变量不会更改
- 为什么函数变量在变量之后是未定义的
- 用内部函数变量更改外部函数变量?Javascript
- Javascript - 使用闭包递增静态函数变量模拟
- 异步 JavaScript 静态函数变量