
以往版本的JS中,如果你在if中定义一个变量,这个变量在if外部也是可以访问的,而不管if条件是否被执行,如:
if(false){
var x = "hello JShaman"
}
console.log(x);
执行这段代码不会失败、不会报错,但会输出undefined:

这情况很可能会引起bug,而且很难找出原因。
在ES6(即:ES2015)中,为了解决这个隐患,引入了let关键字。Let定义的变量,只在自身所在的作用域生效果。修改上述代码如下:
if(false){
let x = "hello JShaman"
}
console.log(x);
执行,即会报错:

而且,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";
执行将会出错,因为试图改变一个常量的值 。

但并不意味着赋值是恒定不变的,用例子来说明:
const x = {};
x.name = "JShaman";
console.log(x);
这个执行是没有问题的:

但如果这样操作是不行的:
const x = {};
x = "JShaman";
执行会出错:

小提示:实际使用时,用const定义三方模块是非常适合的。
本文深入探讨了ES6中引入的let和const关键字,解析了它们如何解决变量作用域的问题,以及在for循环和常量定义中的应用,避免了传统var声明可能引发的bug。
3万+

被折叠的 条评论
为什么被折叠?



