如果我们在声明变量之前对其进行控制台会怎样?

时间:2018-09-08 03:35:27

标签: javascript jquery typescript

以下两种情况有什么区别?

案例1:

console.log(c); //console : undefined
var c;

案例2:

console.log(c); //console : Uncaught ReferenceError: c is not defined

为什么在情况1中控制台未定义?如console.log()之后声明的那样。那时,变量c也未定义,为什么程序控制台未定义

1 个答案:

答案 0 :(得分:1)

Please check docs for var statement in MDN

  

在执行任何代码之前先处理变量声明(通常是声明),在代码中的任何位置声明变量等同于在顶部声明变量。这也意味着可以在声明变量之前使用它。这种行为称为“悬挂”,因为似乎变量声明已移到函数或全局代码的顶部。

因此,在第一个示例中,变量已声明但未定义(即使在该行之前使用var c = 1;也不会被定义)。在第二个示例中,根本没有声明它。