javascript:参数值更改会导致参数值更改吗?

标签 javascript

在 w3cschool 中说“如果一个函数改变了参数的值,它不会改变参数的原始值。”

但是,我不太明白下面的例子:

function bar(a){
    arguments[0] = 10;
    console.log("a",a);//10
    return a;
}
function foo(cc){
    cc = 10;
    return arguments[0];
}
console.log(bar(333));//10
console.log(foo(333));//10

我已经在 chrome 和 firefox 中测试过它们。 根据我的理解,如果参数值的变化不能导致参数值的变化,为什么'bar'无法返回333?

最佳答案

给定一个函数:

function bar(a) {
  arguments[0] = 10;
  return a;
}

bar(50) 这样调用它会返回 10,因为 bar 范围内的值 被 10 替换了。 p>

“如果一个函数改变了参数的值,它不会改变参数的原始值。”的意思是:

var x = 90;
var y = bar(x);

console.log(y);
console.log(x);
// y is 10
// x is still 90 

...不会更改 barx outside 的值。


有关详细信息,请参阅:

关于javascript:参数值更改会导致参数值更改吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33775559/

相关文章:

javascript - 在页面加载时调用的函数不是 jquery .click

javascript - Ajax Bing map 版本 7 - 移动和删除图钉 - 初学者教程

javascript - 在基类中分配的对象不会更改子类

javascript - 使用 Rails button_to_function 时向 js 函数传递一个值

javascript - 使用 Mapbox 更新 Prop 的正确方法

javascript - 在调用 servlet 的 jsp 上进行单独的 ajax 调用

javascript - 查找回文逻辑中的边缘情况

javascript - JQUERY文本区域输入提交

javascript - 双向模型引用策略

javascript - Jquery 自动完成 - 悬停时不突出显示元素并且箭头不起作用