7月16日 ES6

let

var可以重復聲明同一個變量,let進行重復聲明會在console中報錯。

var無論如何都會定義一個全局變量,而let在block, statement, or expression中定義時會定義局部變量。


const

const定義的變量是只讀的,通常用全大寫字母來命名方便辨識。const變量無法被重新聲明賦值,但是卻可以被更改,例子如下:

"use strict";

consts=[5,6,7];

s=[1,2,3];// throws error, trying to assign a const

s[2]=45;// works just as it would with an array declared with var or let

console.log(s);// returns [5, 6, 45]


Object.freeze

Object.freeze(object)方法可以用來防止一個元素被修改。


箭頭函數(shù)

image

rest 參數(shù)

允許我們將一個不定數(shù)量的參數(shù)表示為一個數(shù)組。
相對于解構(gòu)賦值而言,rest參數(shù)會代表所有剩余參數(shù),無法單獨/分別選擇一些參數(shù)。

function(a,b,...theArgs){

    // ...

}

如果函數(shù)的最后一個命名參數(shù)以...為前綴,則它將成為一個由剩余參數(shù)組成的真數(shù)組,其中從0(包括)到theArgs.length(排除)的元素由傳遞給函數(shù)的實際參數(shù)提供。


解構(gòu)賦值 Destructuring Assignment

解構(gòu)賦值語法是一種 Javascript 表達式。通過解構(gòu)賦值, 可以將屬性/值從對象/數(shù)組中取出,賦值給其他變量。

var a, b, rest;
[a, b] = [10, 20];
console.log(a); // 10
console.log(b); // 20

[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(a); // 10
console.log(b); // 20
console.log(rest); // [30, 40, 50]

({ a, b } = { a: 10, b: 20 });
console.log(a); // 10
console.log(b); // 20


// Stage 4(已完成)提案中的特性
({a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40});
console.log(a); // 10
console.log(b); // 20
console.log(rest); // {c: 30, d: 40}

模版字符串 template literal

模板字符串使用反引號 () 來代替普通字符串中的用雙引號和單引號。模板字符串可以包含特定語法(${expression})的占位符。占位符中的表達式和周圍的文本會一起傳遞給一個默認函數(shù),該函數(shù)負責將所有的部分連接起來,如果一個模板字符串由表達式開頭,則該字符串被稱為帶標簽的模板字符串,該表達式通常是一個函數(shù),它會在模板字符串處理后被調(diào)用,在輸出最終結(jié)果前,你都可以通過該函數(shù)來對模板字符串進行操作處理。在模版字符串內(nèi)使用反引號(`)時,需要在它前面加轉(zhuǎn)義符(\)。


定義類Class

類實際上是個“特殊的函數(shù)”,就像你能夠定義的函數(shù)表達式函數(shù)聲明一樣,類語法有兩個組成部分:類表達式類聲明。

類聲明

定義一個類的一種方法是使用一個類聲明。要聲明一個類,你可以使用帶有class關鍵字的類名(這里是“Rectangle”)。

class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
}

函數(shù)聲明類聲明之間的一個重要區(qū)別是函數(shù)聲明會提升,類聲明不會。你首先需要聲明你的類,然后訪問它,否則像下面的代碼會拋出一個ReferenceError

let p = new Rectangle(); // ReferenceError

class Rectangle {}
類表達式

一個類表達式是定義一個類的另一種方式。類表達式可以是具名的或匿名的。

一個具名類表達式的名稱是類內(nèi)的一個局部屬性,它可以通過類本身(而不是類實例)的name屬性來獲取。

// 匿名類
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// 具名類
let Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// 輸出: "Rectangle2"

import & export 不同js之間的通信


JavaScript Promise

語法:

new Promise( function(resolve, reject) {...} /* executor */  );

executor是帶有 resolve 和 reject 兩個參數(shù)的函數(shù) 。Promise構(gòu)造函數(shù)執(zhí)行時立即調(diào)用executor 函數(shù), resolve 和 reject 兩個函數(shù)作為參數(shù)傳遞給executor(executor 函數(shù)在Promise構(gòu)造函數(shù)返回所建promise實例對象前被調(diào)用)。resolve 和 reject 函數(shù)被調(diào)用時,分別將promise的狀態(tài)改為fulfilled(完成)或rejected(失?。?。executor 內(nèi)部通常會執(zhí)行一些異步操作,一旦異步操作執(zhí)行完畢(可能成功/失敗),要么調(diào)用resolve函數(shù)來將promise狀態(tài)改成fulfilled,要么調(diào)用reject 函數(shù)將promise的狀態(tài)改為rejected。如果在executor函數(shù)中拋出一個錯誤,那么該promise 狀態(tài)為rejected。executor函數(shù)的返回值被忽略。


ES5查漏補缺

reduce() / apply()

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容