zoukankan      html  css  js  c++  java
  • 全局作用域中,用 const 和 let 声明的变量不在 window 上,那到底在哪里?如何去获取?

    在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

    在哪里?怎么获取?通过在设置断点,看看浏览器是怎么处理的:

    letandconst

    通过上图也可以看到,在全局作用域中,用 let 和 const 声明的全局变量并没有在全局对象中,只是一个块级作用域(Script)中

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

    let aa = 1;
    const bb = 2;
    
    console.log(aa); // 1
    console.log(bb); // 2
    好记性不如烂笔头,看到自己觉得应该记录的知识点,结合自己的理解进行记录,用于以后回顾。
  • 相关阅读:
    [算法整理]树上求LCA算法合集
    线段树专题测试2017.1.21
    [数据结构]替罪羊树简介
    图论测试 2017.1.17
    bzoj 2038 A-小Z的袜子[hose]
    洛谷比赛『期末考后的休闲比赛2』
    [题解]bzoj 1861 Book 书架
    bzoj 3223 文艺平衡树
    Splay简介
    python2.7 一个莫名其妙的错误
  • 原文地址:https://www.cnblogs.com/wangxi01/p/11207742.html
Copyright © 2011-2022 走看看