开发者社区> 问答> 正文

全局作用域中,用 const 和 let 声明的变量不在 window 上,那到底在哪里?#前端面试

全局作用域中,用 const 和 let 声明的变量不在 window 上,那到底在哪里?如何去获取?

展开
收起
Bill 2020-05-23 13:51:35 2001 0
1 条回答
写回答
取消 提交回答
  • 领取2折优惠劵,有几率免单哦!http://www.weilai.info/tool/326.html

    在ES5中,顶层对象的属性和全局变量是等价的,var 命令和 function 命令声明的全局变量,自然也是顶层对象。

    var a = 12;
    function f(){};
    
    console.log(window.a); // 12
    console.log(window.f); // f(){}
    

    但ES6规定,var 命令和 function 命令声明的全局变量,依旧是顶层对象的属性,但 let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。

    let aa = 1;
    const bb = 2;
    
    console.log(window.aa); // undefined
    console.log(window.bb); // undefined
    
    

    在全局作用域中,用 let 和 const 声明的全局变量并没有在全局对象中,只是一个块级作用域(Script)中

    怎么获取?在定义变量的块级作用域中就能获取啊,既然不属于顶层对象,那就不加 window(global)呗。

    let aa = 1;
    const bb = 2;
    
    console.log(aa); // 1
    console.log(bb); // 2
    
    2020-05-24 11:24:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云技术面试红宝书 立即下载
超全算法笔试-模拟题精解合集 立即下载
程序员面试宝典 立即下载