以下两种情况有什么区别?
案例1:
console.log(c); //console : undefined
var c;
案例2:
console.log(c); //console : Uncaught ReferenceError: c is not defined
为什么在情况1中控制台未定义?如console.log()
之后声明的那样。那时,变量c也未定义,为什么程序控制台未定义
答案 0 :(得分:1)
Please check docs for var
statement in MDN
在执行任何代码之前先处理变量声明(通常是声明),在代码中的任何位置声明变量等同于在顶部声明变量。这也意味着可以在声明变量之前使用它。这种行为称为“悬挂”,因为似乎变量声明已移到函数或全局代码的顶部。
因此,在第一个示例中,变量已声明但未定义(即使在该行之前使用var c = 1;
也不会被定义)。在第二个示例中,根本没有声明它。