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 - Stickit 不保存自动完成字段中的值

javascript - Nightmare Js 多次评估后评估超时

javascript - Highcharts:将 JSON 循环到系列数据中

javascript - 方法定义和对象的函数属性之间的区别

JavaScript PreventDefault 影响子进程

javascript - 尝试注入(inject)对 Angular Controller 的依赖时出现未知提供者错误

javascript - 在对象数组中查找具有更大键的元素

javascript - AJAX 在 Safari 或 Safari 移动设备中未触发

javascript - jQuery 查找功能不起作用

javascript - Vuetify.js:如何在 v-card 的 v-img 组件的右上角显示文本?