jS是单线程的语言,执行顺序肯定是顺序执行,但是JS 引擎并不是一行一行地分析和执行程序,而是一段一段地分析执行,会先进行编译阶段然后才是执行阶段。
例子一:变量提升
foo; // undefinedvar foo = function () {console.log('foo1');}foo(); // foo1,foo赋值var foo = function () {console.log('foo2');}foo(); // foo2,foo重新赋值
例子二:函数提升
foo(); // foo2function foo() {console.log('foo1');}foo(); // foo2function foo() {console.log('foo2');}foo(); // foo2
例子三:声明优先级,函数 > 变量
foo(); // foo2var foo = function() {console.log('foo1');}foo(); // foo1,foo重新赋值function foo() {console.log('foo2');}foo(); // foo1
