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

    若到江南赶上春,千万和春住
  • 相关阅读:
    DirectUI的初步分析转
    win32中调用Atl控件
    win32 DirectUI控件开发与调用指南
    sqlite in qt
    Visual Studio2010中使用IE调试Atl
    silveright使用配置文件转
    Windows phone app 商店认证注意事项简要认证规范指南
    Silverlight桌面部署器及其使用
    Lua语言如何调用自己编写的C DLL 转
    使用Visual Leak Detector for Visual C++ 捕捉内存泄露
  • 原文地址:https://www.cnblogs.com/huyuzhu/p/6492012.html
Copyright © 2011-2022 走看看