ES6 let和const命令(4)

本文介绍了JavaScript中使用const声明常量的方法,并演示了如何在不同模块间共享这些常量。此外,还探讨了全局对象的概念及其在浏览器与Node.js环境下的表现形式,对比了ES5与ES6中声明全局变量的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

转载于:https://www.cnblogs.com/huyuzhu/p/6492012.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值