目录
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
1.背景介绍
ES6是 JavaScript 语言的新标准,已经在 2015 年 6 月正式发布了。 它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。
2.知识剖析
解构
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
let a = 1; let b = 2; let c = 3; ES6允许写成这样: let [a, b, c] = [1, 2, 3];
对象解构
let p ={a:1,b:2} let {a,b}=p //a = 1; b = 2
模板字符串
let week = 1 let day = 28 console.log(`今天是${day}号,周${week}`) //今天是28号,周1
ES5的字符串拼接
let week = 1 let day = 28 console.log("今天是"+day+"号,周"+"week") //今天是28号,周1
let命令
ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
{ let a = 10; var b = 1; }
a // ReferenceError: a is not defined.
b // 1
很适合for循环里使用
不存在变量提升
let的暂时性死区
if (true) { // TDZ开始 tmp = 'abc'; // ReferenceError console.log(tmp); // ReferenceError
let tmp; // TDZ结束
console.log(tmp); // undefined
tmp = 123;
console.log(tmp); // 123
}
在声明变量tmp之前都属于tmp的死区,使用会报错
3.常见问题
解构赋值还有什么用法?
4.解决方案
let {log,warn} = console; log('hello'); console.log('hello') console为一个对象,相当于把console的log对象方法赋值给了变量log,log就是console.log本身
5.编码实战
6.扩展思考
有什么新增的属性?
新增了方法的name属性,返回方法名
let p ={ go:function () { console.log(123) } } p.go.name //go
7.参考文献
http://es6.ruanyifeng.com/#docs/object
8 更多讨论
1,什么是块级作用域
let实际上为 JavaScript 新增了块级作用域。
function f1() {
let n = 5;
if (true) {
let n = 10;
}
console.log(n); // 5
}
上面的函数有两个代码块,都声明了变量n,运行后输出 5。这表示外层代码块不受内层代码块的影响。如果两次都使用var定义变量n,最后输出的值才是 10。
2.const用法?
const声明一个只读的常量。一旦声明,常量的值就不能改变。const的作用域与let命令相同:只在声明所在的块级作用域内有效。
3,对象简写使用?
function f(x, y) {
return {x, y};
}
// 等同于
function f(x, y) {
return {x: x, y: y};
}
f(1, 2) // Object {x: 1, y: 2}