gpt4 book ai didi

javascript - 传递给函数的变量仅在函数内更改

转载 作者:行者123 更新时间:2023-12-02 14:53:11 27 4
gpt4 key购买 nike

我创建了一个简单的函数,我注意到 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);
}

fiddle 是here .

也许这些年来我一直在误解 Javascript,但我本来期望 isEven check()内与原来一样isEven .....但是你可以在日志中看到,外面 isEven保持为 0....

最佳答案

在 JavaScript 中,对象是通过复制对象的引用来传递的。基本类型(字符串/数字/等)按值传递。

这意味着如果您传入一个对象,则修改函数内的对象将反射(reflect)在函数外部,因为内部和外部都将引用同一对象。

对于原始类型,变量在传入时会被复制,函数内部的更改将不再反射(reflect)在函数外部的变量中。

关于javascript - 传递给函数的变量仅在函数内更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36024122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com