zoukankan      html  css  js  c++  java
  • ES6 let和const命令(4)

    const声明的常量只在当前代码块有效。如果想设置跨模块的常量,可以采用下面的写法。

    //constants.js模块
            export const A = 1;
            export const B = 3;
            export const C = 4;
            //test1.js模块
            import * as constants from './constants';
            console.log(constants.A);//1
            console.log(constants.b);//3
            //test2.js模块
            import {A,B} from './constants';
            console.log(A);//1
            console.log(B);//3
    

    全局对象是最顶层的对象,在浏览器环境指的是windows对象,在Node.js中指的是global对象。

    在ES5中,全局对象的属性与全局变量是等价的。

    window.a = 1;
            a//1
            a = 2;
            window.a//2
    

    上面代码中,全局对象的属性赋值与全局变量的赋值是同一回事。(对于Node.js来说,这一条只对REPL环境适用,模块环境之中,全局变量必须显示声明成global对象的属性。)

    这种规定杯视为javaScript语言的一大问题,因为很容易不知不觉就创建了全局变量。ES为了改变这一点,一方面规定,var命令和function命令声明的全局变量依旧是全局对象的属性;另一方面规定,let命令、const命令和class命令声明的全局变量不属于全局对象的属性。

    var a = 1;
            //如果在Node.js的REPPL环境,可以写成global.a
            //或者采用通用方式法,写成this.a
            window.a //1
    
            let b = 1;
            window.b//undefind
    

    上面的代码中,全局变量a又var命令声明,所以是全局对象你的属性;全局变量b由let命令声明,所以不是全局对象的属性,返回undefined

    若到江南赶上春,千万和春住
  • 相关阅读:
    safeNet
    网店
    微信公众号自定义菜单与回车
    西游记对教育的启发
    zencart资源
    cmd批处理常用符号详解
    div垂直居中
    git工作量统计
    VS2012变化的快捷键:
    sql 树 递归
  • 原文地址:https://www.cnblogs.com/huyuzhu/p/6492012.html
Copyright © 2011-2022 走看看