【前端】ES6入門基礎知識

關於ES6的入門瞭解算法

新增模板字符串(爲JavaScript提供了簡單的字符串插值功能)、箭頭函數(操做符左邊爲輸入的參數,而右邊則是進行的操做以及返回的值Inputs=>outputs。)、for-of(用來遍歷數據—例如數組中的值。)arguments對象可被不定參數和默認參數完美代替。ES6將promise對象歸入規範,提供了原生的Promise對象。增長了let和const命令,用來聲明變量。增長了塊級做用域。let命令實際上就增長了塊級做用域。ES6規定,var命令和function命令聲明的全局變量,屬於全局對象的屬性;let命令、const命令、class命令聲明的全局變量,不屬於全局對象的屬性。。還有就是引入module模塊的概念數組

對Promise的理解promise

  • 依照 Promise/A+ 的定義,Promise 有四種狀態:瀏覽器

    • pending: 初始狀態, 非 fulfilled 或 rejected.
    • fulfilled: 成功的操做.
    • rejected: 失敗的操做.
    • settled: Promise已被fulfilled或rejected,且不是pending
  • 另外, fulfilled 與 rejected 一塊兒合稱 settled
  • Promise 對象用來進行延遲(deferred) 和異步(asynchronous ) 計算

Promise 的構造函數數據結構

  • 構造一個 Promise,最基本的用法以下:
var promise = new Promise(function(resolve, reject) {

        if (...) {  // succeed

            resolve(result);

        } else {   // fails

            reject(Error(errMessage));

        }
    });
  • Promise 實例擁有 then 方法(具備 then 方法的對象,一般被稱爲thenable)。它的使用方法以下:
promise.then(onFulfilled, onRejected)
  • 接收兩個函數做爲參數,一個在 fulfilled 的時候被調用,一個在rejected的時候被調用,接收參數就是 future,onFulfilled 對應 resolve, onRejected 對應 reject

什麼是 Promise ?異步

  • Promise 就是一個對象,用來表示並傳遞異步操做的最終結果
  • Promise 最主要的交互方式:將回調函數傳入 then 方法來得到最終結果或出錯緣由
  • Promise 代碼書寫上的表現:以「鏈式調用」代替回調函數層層嵌套(回調地獄)

ECMAScript6的新特性async

  • 塊級做用區域 let a = 1;
  • 可定義常量 const PI = 3.141592654;
  • 變量解構賦值 var [a, b, c] = [1, 2, 3];
  • 字符串的擴展(模板字符串) var sum = ${a + b};
  • 數組的擴展(轉換數組類型) Array.from($('li'));
  • 函數的擴展(擴展運算符) [1, 2].push(...[3, 4, 5]);
  • 對象的擴展(同值相等算法) Object.is(NaN, NaN);
  • 新增數據類型(Symbol) let uid = Symbol('uid');
  • 新增數據結構(Map) let set = new Set([1, 2, 2, 3]);
  • for...of循環 for(let val of arr){};
  • Promise對象 var promise = new Promise(func);
  • Generator函數 function* foo(x){yield x; return x*x;}
  • 引入Class(類) class Foo {}
  • 引入模塊體系 export default func;
  • 引入async函數[ES7]
async function asyncPrint(value, ms) {
      await timeout(ms);
      console.log(value)
     }

Object.is() 與原來的比較操做符 ===、== 的區別?函數

  • == 相等運算符,比較時會自動進行數據類型轉換
  • === 嚴格相等運算符,比較時不進行隱式類型轉換
  • Object.is 同值相等算法,在 === 基礎上對 0 和 NaN 特別處理
+0 === -0 //true
NaN === NaN // false

Object.is(+0, -0) // false
Object.is(NaN, NaN) // true

什麼是 Babel ?ui

  • Babel 是一個 JS 編譯器,自帶一組 ES6 語法轉化器,用於轉化 JS 代碼。
    這些轉化器讓開發者提早使用最新的 JS語法(ES6/ES7),而不用等瀏覽器所有兼容。
  • Babel 默認只轉換新的 JS 句法(syntax),而不轉換新的API。
相關文章
相關標籤/搜索