版权声明:原创内容请勿转载 https://blog.csdn.net/qq_40662457/article/details/83181592
ES6中新增的两个声明标识符 let 、const
var 默认全局、函数作用域,有预解析(存在变量解析)
let:块级作用域,只在{ }范围内起作用,没有预解析(不存在变量解析),不能被重复定义(声明)
可以通过以下一个简单for循环的对比轻松看出差异
<input type="button" class="btn1" value="let"/>
<input type="button" class="btn2" value="var"/>
<!-- 对比var定义的全局变量下的console和块级作用域下let定义的console -->
<script>
for(let i=0;i<10;i++){
console.log(i);
}
for(var i=0;i<10;i++){
console.log(i);
}
</script>
<input type="button" class="btn3" value="var_alert"/>
<input type="button" class="btn3" value="var_alert"/>
<input type="button" class="btn3" value="var_alert"/>
<input type="button" class="btn3" value="var_alert"/>
<input type="button" class="btn4" value="let_alert"/>
<input type="button" class="btn4" value="let_alert"/>
<input type="button" class="btn4" value="let_alert"/>
<input type="button" class="btn4" value="let_alert"/>
<!-- 对比var定义的全局变量下的console和块级作用域下let定义的console -->
<script>
for(let i=0;i<4;i++){
$(".btn3").eq(i).click(function(){
alert(i);
});
}
for(var i=0;i<4;i++){
$(".btn4").eq(i).click(function(){
alert(i);
});
}
</script>
const :作用域和 let 命令相同,只在声明所在的块级作用域内有效
定义(声明)常量(不能被修改的),声明的同时必须赋值,先声明后赋值会报错 const obj = 123;
//三种书写方式
const obj = "技术";
const arr = ['chen','shi','jia','zu'];
const arr = {
user:'chen',
hostname:'ID',
password:'123'
};
//数组可以被扩展,也可以被禁止
const arr = ['chen','shi','jia','zu'];
arr.push('qiye');
console.log(arr);
//使用object.freeze()函数可以禁止数组被扩展
const arr = object.freeze(['chen','shi','jia','zu']);
arr.push('qiye');
console.log(arr);
// PS:报错