猿问

Javascript 变量未在函数内更新

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”时数字没有更新函数内的值吗?


慕妹3242003
浏览 101回答 3
3回答

慕的地6264312

第一个代码片段创建一个局部变量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 scopechange(number); console.log(number);在第二个片段中,您直接更新number函数外部的定义change,因此您会看到更新的值。

FFIVE

在第一个代码片段中,参数隐藏了变量number- 它创建了一个名为的变量,number该变量是函数的本地变量,然后更新它。在第二个片段中,甚至没有使用参数,而是number直接更新变量。您可以编写不带参数的相同函数:let number = 100 function change() { // No parameter!    number = number * 10;} change(); console.log(number);

呼唤远方

您可以使用与参数同名的变量,因为无论如何,值都是相同的,除非同名变量的值与参数不同,这是因为函数的参数已被声明为该函数的本地参数。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答