javascript,聲明變量和導入時,大括號的特殊用法


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM