JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。
console.log(b);
var b = 1;
上面的代码因为hosting(变量提升),真正运行时是
var b;
console.log(b);
b = 1;
把代码放到控制台去执行
结果都是undefined
也就是变量已经声明了,但是没有赋值还。
null和undefined的区别:
// 变量声明了,但没有赋值
var i;
i // undefined
// 变量都没有声明
bbq // Uncaught ReferenceError: bbq is not defined