JS實用新語法——第一篇
阿新 • • 發佈:2022-03-31
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其讓非同步完成變成同步的方式