为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript 变量未在函数内更新

Javascript 变量未在函数内更新

慕妹3242003 2023-10-14 09:53:25
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,因此您会看到更新的值。


查看完整回答
反对 回复 2023-10-14
?
FFIVE

TA贡献1797条经验 获得超6个赞

在第一个代码片段中,参数隐藏了变量number- 它创建了一个名为的变量,number该变量是函数的本地变量,然后更新它。


在第二个片段中,甚至没有使用参数,而是number直接更新变量。您可以编写不带参数的相同函数:


let number = 100

 

function change() { // No parameter!

    number = number * 10;

}

 

change();

 

console.log(number);


查看完整回答
反对 回复 2023-10-14
?
呼唤远方

TA贡献1856条经验 获得超11个赞

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



查看完整回答
反对 回复 2023-10-14
  • 3 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信