1. 程式人生 > >ES6有哪些新特性

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}