let number = 100 function change(number) { number = number * 10;} change(number); console.log(number);上面的代码输出 100,而let number = 100 function change(blah) { number = number * 10;} change(number); console.log(number);输出 1000有人可以解释为什么当参数名称也是“number”时数字没有更新函数内的值吗?
3 回答
慕的地6264312
TA贡献1817条经验 获得超6个赞
第一个代码片段创建一个局部变量number作为函数参数,它隐藏同名的外部变量。
由于 JavaScript 是按值传递的,因此新变量会被赋予 value 100。由于变量的作用域为函数change,因此当您更新赋值时,函数作用域中定义的变量也会更新。
let number = 100
function change(number) {
//This is the variable scoped to the function
number = number * 10;
}
//This is the variable defined in the global scope
change(number);
console.log(number);
在第二个片段中,您直接更新number函数外部的定义change,因此您会看到更新的值。
FFIVE
TA贡献1797条经验 获得超6个赞
在第一个代码片段中,参数隐藏了变量number- 它创建了一个名为的变量,number该变量是函数的本地变量,然后更新它。
在第二个片段中,甚至没有使用参数,而是number直接更新变量。您可以编写不带参数的相同函数:
let number = 100
function change() { // No parameter!
number = number * 10;
}
change();
console.log(number);
添加回答
举报
0/150
提交
取消