JS的预编译
编译的提升
案例
;(function(){
console.log(a); // 4
function a(){ 1 }
console.log(a); // 4
function a(){ 2 }
console.log(a); // 4
var a = 10; // var a;提升在了最顶端,但是a的赋值没有被提升,a=10覆盖了函数4
console.log(a); // 10
a = function(){ 3 } // 函数3赋值给了a,此时函数3覆盖了a=10
console.log(a); // 3
function a(){ 4 } // 函数4覆盖了函数2、函数1,提升在了var的后面
console.log(a); // 3
})();