【发布时间】:2026-01-22 02:55:02
【问题描述】:
var a = 'why is this not undefined?';
function checkScope(a) {
var a;
console.log(a);
}
checkScope(a);
Javascript 是函数式范围语言,对吧?当我在函数内部声明一个与函数参数同名的新变量时,为什么新定义的变量仍然保存与参数相同的数据?
我认为它应该是未定义的?
【问题讨论】:
-
我不确定,但我认为,由于提升,两个
avar 在调用函数之前都已声明,因此参数a变为与声明的 @987654324 相同的 var @函数内部。 -
什么是“功能范围”? JS 具有函数作用域,即参数名称、函数和变量声明定义了整个函数体的变量名称。这里没有任何东西互相覆盖。
-
JS 语法允许这样做!?
标签: javascript variables function-parameter