https://blog.csdn.net/guothree2003/article/details/109076273
作為一個新手,今天看到一段奇怪的代碼,定義變量時用大括號把變量名括起來了,還有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