1. 程式人生 > 其它 >JS實用新語法——第一篇

JS實用新語法——第一篇

ES6(ES2015)

1.局域作用域

let , const 定義的變數局域作用域,局域作用域變數只能宣告一次,不能重複宣告。

let 定義的變數,只能在塊作用域裡訪問,不能跨塊訪問,也不能跨函式訪問。

const 用來定義常量,使用時必須初始化(即必須賦值),只能在塊作用域裡訪問,而且不能修改。

let a = 1; const b = 1;
let a = 2; const b = 2;
以上聲明瞭兩次,第一次宣告成功,第二次會報錯
const c ;c = 1
如此也是錯誤,因為const宣告的常量要在定義時就賦值
let a = 1
const b = 1
這樣寫才是正確的

 

2.箭頭函式

fn( ) => { }

當只有一行程式碼時會自動return和可以寫{ } 

如 fn( ) =>  a=1 會return a

和普通的函式相比不用function宣告,裡面沒有this,this是其父級作用域的this

 

3.promise 

解決回撥地獄的問題
new promise((resolve,reject)=>{
  非同步請求{
    if(條件){
      resolve(data)
    }else{
      reject(err)
    }  
  }
}).then((data)=>{
  resolve後的繼續操作,
}).catch((err)=>{
   reject後的操作

})
resolve表示成功的,then是成功的操作,接收請求resolve返回的資料(then為非同步所以不會出現接收資料不到問題)
reject為失敗的,catch是錯誤的操作,接收reject返回的資料

promise還有 promise.all的用法
基本用法為promise([基礎promise,基礎promise]).then().catch()
其它的就不再贅述了,有興趣的朋友可以自己去了解

 

4.解構賦值 

let { foo, bar } = { foo: 'aaa', bar: 'bbb' }; //自己解構成foo,bar

console.log(foo,bar) // foo = 'aaa' // bar = 'bbb' ;
let { baz : foo } = { baz : 'ddd' }; //解構並且給其改名為foo console.log(foo) // foo = 'ddd'

 

5.擴充套件張運算子

...[1,2,3]  //將陣列變成單獨的變數1,2,3

 

6.預設引數

( a, b=2 ) => {  } //如果b沒有傳入b預設為2

 

7.模板字串

與單雙引號對比的差別
1.可換行
`11 11` 2.可包含變數
`
1${變數}1
`

 

ES7(ES2016)

1.includes()

變數.includes(),用來判斷一個數組或者字串是否包含一個指定的值
包含返回true,不包含返回false 如:[1,2,3].includes(1) 返回true
"arg".includes('b') 返回false

ES8(ES2017)

1.async await

進一步的優化非同步的寫法,將非同步變為同步的寫法。
如:
async ()=>{
  await 非同步請求
  console.log(222)
}
會先執行非同步請求完成,再列印222
async await其讓非同步完成變成同步的方式