作為一個新手,今天看到一段奇怪的代碼,定義變量時用大括号把變量名括起來了,還有import時也使用了大括号
import { getToken } from '@/utils/auth'
let { data } = request()
一臉懵,這是啥意思?
度娘一番,記錄在此
1. 關于導入時的大括号(據說是ES6引入的特性)
我們知道,在javascript中,導出可以有多個,但是隻有一個default, 例如
export const A = 42 //命名導出
export const B = 43 //命名導出
export const C = 44 //命名導出
export default Default = "lala" //預設導出
這時,如果我們要在另一個檔案中導入的話,對于非default的export, 我們必須用大括号的方式導入
import { A } from xxxx //僅導入了A,而且名字必須是A
import { A, B, C } from xxxx //導入了A,B,C, 名字必須與export時的名字相同
對于default的導出,不用大括号
import person from xxxx //person這個名字可以随便定義
import person, { A,B,C } //同時導入預設的和命名的導出
2. 命名變量時,變量名字在大括号中
簡單了解的話,就是同時給多個變量指派,說起來太複雜,舉個例子就明白了
function gimmeAnObject() {
return {
foo: "hey",
bar: "sup"
};
}
let data = {"foo": "abcd", "name": "unkonwn"}
console.log(gimmeAnObject()); // Object { foo="hey", bar="sup" }
var { foo, bar } = gimmeAnObject(); //foo和bar必須與右側對象中的屬性名相對應
console.log(foo); // hey
console.log(bar); // sup
var { foo } = data ; //foo必須與右側對象中的屬性名相對應
console.log(foo); // abcd
這種指派方式也可以應用在函數的參數上,你傳一個object對象給一個參數,這個object包含大量資料,但是你隻對其中部分資料感興趣,可以這樣做
let myobj = {
"name": "simon",
"age": 14
}
function xxx({ age }){
console.log(age)
}
xxx(myobj)
//輸出為14