Javascript 变量没有在函数内部更新
Javascript variable is not updating inside function
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”
时数字没有在函数内部更新它的值吗
在第一个片段中,参数 隐藏了 number
变量 - 它创建了一个名为 number
的变量,该变量是函数的局部变量,然后更新它。
在第二个代码段中,甚至没有使用参数,而是直接更新了 number
变量。您可以在没有参数的情况下编写相同的函数:
let number = 100
function change() { // No parameter!
number = number * 10;
}
change();
console.log(number);
第一个代码片段创建了一个局部变量 number
作为函数参数,它隐藏了同名的外部变量。
由于 JavaScript 是按值传递的,因此新变量被分配了值 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);
在第二个片段中,您直接更新了在函数 change
外部定义的 number
,因此您会看到更新后的值。
您可以使用与参数同名的变量,因为值无论如何都是相同的,除非同名变量将具有与参数不同的值 这是因为函数的参数已经声明为该函数的局部参数。
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”
在第一个片段中,参数 隐藏了 number
变量 - 它创建了一个名为 number
的变量,该变量是函数的局部变量,然后更新它。
在第二个代码段中,甚至没有使用参数,而是直接更新了 number
变量。您可以在没有参数的情况下编写相同的函数:
let number = 100
function change() { // No parameter!
number = number * 10;
}
change();
console.log(number);
第一个代码片段创建了一个局部变量 number
作为函数参数,它隐藏了同名的外部变量。
由于 JavaScript 是按值传递的,因此新变量被分配了值 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);
在第二个片段中,您直接更新了在函数 change
外部定义的 number
,因此您会看到更新后的值。
您可以使用与参数同名的变量,因为值无论如何都是相同的,除非同名变量将具有与参数不同的值 这是因为函数的参数已经声明为该函数的局部参数。