es6新特性_Node.JS实战64:ES6新特性:Let和Const

8607d3bcd35530ea0601b175bb73944b.png

以往版本的JS中,如果你在if中定义一个变量,这个变量在if外部也是可以访问的,而不管if条件是否被执行,如:

if(false){

var x = "hello JShaman"

}

console.log(x);

执行这段代码不会失败、不会报错,但会输出undefined:

7a120d65e87a06aec79165d32bb3627c.png

这情况很可能会引起bug,而且很难找出原因。

在ES6(即:ES2015)中,为了解决这个隐患,引入了let关键字。Let定义的变量,只在自身所在的作用域生效果。修改上述代码如下:

if(false){

let x = "hello JShaman"

}

console.log(x);

执行,即会报错:

e3873ae7f3a424c64a7a81dedc90b371.png

而且,let还可以广泛的应用在for循环中,如:

for(let i=0; i<10; i++){

console.log("JS代码混淆,就用JShaman代码混淆加密平台");

}

console.log(i);

这时执行同样会报错:i未定义。

ES6还新增了一个const关键字,用于定义常量:

const x = "JShaman:JS代码混淆加密平台";

x = "hello jshaman";

执行将会出错,因为试图改变一个常量的值 。

8c08f0f1cee9d898eb658b86e66a660d.png

但并不意味着赋值是恒定不变的,用例子来说明:

const x = {};

x.name = "JShaman";

console.log(x);

这个执行是没有问题的:

32ea416c211cf7a7234c125e860aa064.png

但如果这样操作是不行的:

const x = {};

x = "JShaman";

执行会出错:

2e56ea2830836ed7564a2256fd4286f6.png

小提示:实际使用时,用const定义三方模块是非常适合的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值