ECMAScript 6 目前基本成为业界标准,它的普及速度比 ES5 要快很多,主要原因是现代浏览器对 ES6 的支持相当迅速,尤其是 Chrome 和 Firefox 浏览器,已经支持 ES6 中绝大多数的特性。
关键字 let
使用let声明的变量只作用在{}中,出了{}即不可用
{
let i = 10;
alert(i);
}
alert(i)
只打印一次,第二次报错
使用let声明的变量不能重复声明
错误示范:
{
let i = 2;
let i = 4;
alert(i);
}
使用let声明的变量不会变量提升
错误示范:
{
alert(i);
let i = 10;
}
小编程
下列html标签,单击ABC弹出1,2,3 用let和闭包两种方法实现
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
</ul>
使用var
执行点击条件的时候for循环已经执行完毕,i是全局变量5
{
var lis = document.querySelectorAll("ul li");
for(var i=0;i<lis.length;i++){
lis[i].onclick = function(){
alert(i)
}
}
使用let
使用let i变成局部变量缓存
var lis = document.querySelectorAll("ul li");
for(let i=0;i<lis.length;i++){
lis[i].onclick = function(){
alert(i+1)
}
}
使用匿名函数自执行方式(闭包),营造了局部作用域
var lis = document.querySelectorAll("ul li");
for(var i=0;i<lis.length;i++){
(function(i){lis[i].onclick = function(){alert(i+1)}})
(i)
}
关键字const
const 常量声明
局部作用域
声明时必须赋值
const FREEZON
错误
赋值后不能够修改
const PI = 15;
PI = 3.14;
alert(PI)
报错
建议大写
复杂类型 可以修改内容,不可以修改地址
const MY_ARR = [1,2,3];
MY_ARR.push(4)正确
alert(MY_ARR)
可以添加,但不能直接重新赋值
MY_ARR = [1,2,3,4]错误
小总结