ES6有哪些新特性
目錄
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}