javascript声明提升案列

来源:互联网 发布:医疗包升级数据 编辑:程序博客网 时间:2024/05/22 12:05

var定义的变量会提升

    if(!(a in window)){        var a = 1;        console.log('haha')    }    console.log(a);

以上代码只会输出undefined,不会输出haha,因为JavaScript在解析时会首先将当前作用域中的 变量进行扫描,建立作用域链,变量的初始值都为undefined,因此以上代码相当于:

    var a = undefined;    if(!(a in window)){//所有这里为假        var a = 1;        console.log('haha')    }    console.log(a);

若将代码换成

letconst定义的变量不会提升

    if(!(a in window)){        let a = 1;//或者换成const        console.log('haha')    }    console.log(a);

以上代码在执行到a in window是就会报错,因为letconst定义的变量不会提升

函数声明会提升,函数表达式不会

原创粉丝点击