• 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

    若到江南赶上春,千万和春住
  • 相关阅读:
    去除vue-router 链接上的#号
    input 实现调用本地摄像头 实现拍照 和拍视频
    vue-cli 安装sass 和 font-awesome 笔记
    linux下alias命令详解
    linux下source命令的基本功能
    在Linux命令行窗口中,怎么向上翻页?
    Android内存监测工具使用
    Activity的Theme主题风格
    ListView中CheckBox错乱解决
    绘图之Canvas学习
  • 原文地址:https://www.cnblogs.com/huyuzhu/p/6492012.html
Copyright © 2020-2023  润新知