ES6 语法
简介
ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版。
ES6 主要是为了解决 ES5 的先天不足,比如 JavaScript 里并没有类的概念,但是目前浏览器的 JavaScript 是 ES5 版本,大多数高版本的浏览器也支持 ES6,不过只实现了 ES6 的部分特性和功能。
ES6指的是javascript新规范
ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const。
let 关键字
let关键字是用来取代var的;
let作用,与var类似,用于声明一个变量;
{
let a = 'http://www.baidu.com';
var b = "魔道祖师";
console.log(b);
console.log(a);
}
console.log(b);
console.log(a);// 报错 ReferenceError: a is not defined
let 只在let命令所在块级作用域里有效
效果:
{
let a = 'http://www.baidu.com';
var b = "魔道祖师";
let a = 'http://www.douyin.com';// 报错 Identifier 'a' has already been declared
var b = "含光君";
console.log(b);
console.log(a);
}
console.log(b);
console.log(a);
let 不能重复声明
效果:
注意:
for 循环计数器很适合用 let
for (var i = 0; i < 6; i++) {
setTimeout(function(){
console.log(i);
})
}
// 输出6个 6
for (let j = 0; j < 6; j++) {
setTimeout(function(){
console.log(j);
})
}
// 输出 012345
解析:
-
变量 i 是用 var 声明的,在全局范围内有效,所以全局中只有一个变量 i, 每次循环时,setTimeout 定时器里面的 i 指的是全局变量 i ,而循环里的6个 setTimeout 是在循环结束后才执行,所以此时的 i 都是 6。
-
变量 j 是用 let 声明的,当前的 i 只在本轮循环中有效,每次循环的 j 其实都是一个新的变量,所以 setTimeout 定时器里面的 j 其实是不同的变量,即最后输出012345。(若每次循环的变量 j 都是重新声明的,如何知道前一个循环的值?这是因为 JavaScript 引擎内部会记住前一个循环的值)。
console.log(aa);// 报错 ReferenceError: a is not defined
let aa =