js声明提前

JavaScript虽然是解释执行,但也不是按部就班逐句解释执行的,在真正解释执行之前,JavaScript解释器会预解析代码,将变量、函数声明部分提前解释,这就意味着我们可以在function声明语句之前调用function。

console.log(a);//undefined
var a=1;
console.log(a);//1
console.log(b);//ReferenceError

上面代码在执行前var a=1; 的声明部分就已经得到预解析但是不会执行赋值语句),所以第一次的时候会是undefined而不会报错,执行过赋值语句后会得到1,上段代码去掉最后一句和下面代码是一样的效果。

var a;
console.log(a);//undefined
a=1;
console.log(a);//1

 

你可能感兴趣的:(javascript)