Javascript 将变量指定为具有相同名称的函数参数

Javascript 将变量指定为具有相同名称的函数参数,javascript,function,Javascript,Function,我不明白为什么这是不正确的: let a=5 a = a //so there are no errors here. In the last statement javascript replaces the left side with a value, and that's it 现在如果我写这个: let a=5 function hey(a=a){ return console.log(a) } hey() 这将返回undefined,因此参数a=a不会计算为a=6 使用相同变量

我不明白为什么这是不正确的:

let a=5
a = a
//so there are no errors here. In the last statement javascript replaces the left side with a value, and that's it
现在如果我写这个:

let a=5
function hey(a=a){
return console.log(a)
}
hey()
这将返回undefined,因此参数a=a不会计算为
a=6



使用相同变量名的用例是,我希望在脚本的开头创建一个包含变量的部分,并使用与我以后在函数中使用的名称相同的名称。

在第一个示例中,您有一个名为
a
变量。您可以将值分配给
a
a
。这是毫无意义的,但也是可能的

在第二个示例中,您有两个不同的变量,它们都命名为
a
,存在于不同的范围内。在函数声明中,
a
指的是局部变量
a
,而不是全局变量
a
。当您尝试使用
a
作为默认值时,它将读取本地范围的
a
,这是
未定义的

如果您想这样做,请使用不同的名称。将它们组织在一个对象中可能也是有意义的

const默认值={
a:5
};
函数hey(a=默认值){
控制台日志(a);
}

嘿()如果您试图理解它是如何工作的,那么它并不是毫无意义的。如果我给a下定义;在函数内部,它将返回一个已声明的错误。idk你觉得这个怎么样logic@misternobody-如果您将
a
声明为函数参数,然后尝试使用
let
再次声明,则这将是同一范围内的第二次声明。将a声明为函数参数意味着什么?这是重新声明'a'但不会引发错误吗?
函数(a,b,c){}
将三个变量声明为函数参数。这不是问题。如果我们声明a=5;然后函数hey(a,b,c){}重新声明a没有错误