浓缩解读前端系列书籍一周一章前端书

一周一章前端书·第4周:《你不知道的JavaScript(上)》

2017-10-17  本文已影响13人  梁同学de自言自语

第4章:提升

4.1 先有鸡还是先有蛋

4.2 编译器再度来袭

//变量的声明语句被提升到最顶端
var a;
a = 2;
console.log(a);
//只提升声明的语句,而赋值和引用的语句不会被提升
var a;
console.log(a);
a = 2;

4.3 函数优先

//运行foo函数,最终输出1
foo();

var foo;    //声明foo变量
//声明foo函数
function foo(){
    console.log(1);
}

//为foo变量赋值一个函数
foo = function(){
    console.log(2);
}

引擎会这样处理:

//函数声明先被提升到顶部,重复的var声明被忽略
function foo(){
    console.log(1);
}

//声明后紧接着就是调用语句
foo();

//赋值语句在调用语句之后
foo = function(){
    console.log(2);
}
// 输出3
foo();

function foo(){
    console.log(1);
}

var foo = function(){
    console.log(2);
}

function foo(){
    console.log(3);
}
foo(); //输出 b

if(true){
    function foo(){
        console.log('a');
    }
}else{
    function foo(){
        console.log('b');
    }
}

4.4 小结

上一篇 下一篇

猜你喜欢

热点阅读