實用的es6總結

經常使用的es6記錄

變量聲明const和let

let:塊級元素,不容許在相同做用域內,重複聲明同一個變量
const:對象所指向的地址不能改變,而變量成員是能夠修改的git

解構賦值

let [a, b, c] = [1, 2, 3];
let { foo, bar } = { foo: "aaa", bar: "bbb" };

Spread Operator 展開運算符

就是所謂的...
複製合併數組和對象es6

const arr1= [1, 2];
//複製數組
const arr2= [...arr1];(對象的子對象arr2改變不會影響arr1,後面子對象會影響)
//合併數組
[...arr1,...arr2]

有時候咱們想獲取數組或者對象除了前幾項或者除了某幾項的其餘項github

//對象也是相似下面這樣
let number = [1,2,3,4,5]
let  [first, ...rest] = number//2,3,4,5

字符串擴展

模板字符串:將表達式嵌入字符串中進行拼接。用${}來界定ajax

var str = 'hello';
var result = `<div>${str} world</div>`;

padStart:用於頭部補全,相對的padEnd爲尾部補全數組

'1'.padStart(2, '0');用於日期的補全工做

數值擴展

用來判斷一個數值是否爲整數:Number.isInteger()
Math函數的擴展 Math.trunc 去除小數部分異步

數組擴展

Array.of()將一組值轉換成數組
Math.max(...[14, 3, 77]),取得最大值async

函數擴展

爲函數的參數設置默認值函數

對象擴展

定義對象的函數能夠省略冒號與 function 關鍵字
Object.assign():進行淺複製和同名屬性的替換(源對象某個屬性的值是對象,若是改變會反映到目標對象)
Object.is():比較兩個值是否相等
Object.values(),Object.keys()經過value或者key生成的數組this

箭頭函數

使用「箭頭」(=>)定義函數
函數體內的this對象,就是定義時所在的對象,而不是使用時所在的對象rest

Promise

  • 避免了層層嵌套的回調函數,用於定時器、ajax中
  • Promise對象是一個構造函數,用來生成Promise實例,Promise 新建後當即執行,Promise實例的狀態變爲resolved,就會觸發then方法綁定的回調函數
  • 接收的函數參數是同步執行的,可是then方法中的回調函數執行則是異步的
function result(value){
    return new Promise(function(resolve,reject){
        if(value){
            resolve('你成功了');
        }else{
            reject('你失敗了');
        }
    });
}
也能夠直接定義return Promise.reject('xxx');
result(true).then(function(value){
    console.log(value);
}).catch(function(value){
    console.log(value);
});
console.log('先輸出');

async

  • async函數返回一個Promise對象,可使用then方法添加回調函數
  • await表示緊跟在後面的表達式須要等待結果(異步操做),拿到結果才能進入下一步,await只能出如今async函數中
  • await命令後面是一個Promise對象。若是不是,會被轉成一個當即resolve的 Promise對象
  • async函數內部return語句返回的值,會成爲then方法回調函數的參數
function timer(){
    return new Promise((resolve,reject)=>{
        setTimeout(resolve,1500);
    });
}
async function go(){
    await timer().then(()=>{console.log('timer')});
    console.log('go');
}
go();

import 和 export

//導入
import people from './example'
// 導出默認, 有且只有一個默認
export default App

//導入所有而且設置別名
import * as example from "./example"
//n多個 export 導出不少模塊

//導入部分
import {name, age} from './example'
//導出
export name;
export age;

Symbol

新的原始數據類型,防止屬性名衝突,能夠接受一個字符串做爲參數,表示對 Symbol 實例的描述。

let set = Symbol('set');
let a = {};
a[set] = 'hello';

注意:一、Symbol值做爲對象屬性名時,不能用點運算符。二、該屬性不會出如今for...in、for...of循環中

結束,撒花~~~

github

歡迎你們加star~~
https://github.com/ymblog/book

相關文章
相關標籤/搜索