1. 程式人生 > 其它 >JS物件中的key要不要帶引號

JS物件中的key要不要帶引號

參考文件:

https://juejin.cn/post/6919744443188772872

 

那麼加不加""有什麼區別呢?首先要複習一下識別符號原則:

1、首字母必須是字母、下劃線(_)或美元符號($),不能是數字。

2、除首字母外,其他字元可以是字母、數字、下劃線或美元符號($)。

3、普通識別符號(用作變數名、函式名和迴圈語句中用於跳轉的標記)不能是保留字元或關鍵字。

4、在嚴格模式下,arguments和eval不能用作變數名,函式名或者引數名。

 

所以這裡要分符合識別符號情況不符合識別符號情況來說一下。

符合識別符號情況

key加不加"",都一樣,讀取key對應的value有兩種方式:obj["key"]

obj.key都可以。

程式碼如下:

let obj1 = {
    name: "小明",
    $age: 18,
    _like: "愛好廣泛"
}
let obj2 = {
    "name": "小紅",
    "$age": 16,
    "_like": "愛好很少"
}

console.log(obj1) 
// {name: "小明", age: 18, _like: "愛好廣泛"}
console.log(obj1.name, obj1.$age, obj1._like) 
// 小明 18 愛好廣泛
console.log(obj1['name'], obj1['$age'], obj1['_like']) 
// 小明 18 愛好廣泛

console.log(obj2) 
// {name: "小紅", $age: 16, _like: "愛好很少"}
console.log(obj2.name, obj2.$age, obj2._like) 
// 小紅 16 愛好很少
console.log(obj2['name'], obj2['$age'], obj2['_like']) 
// 小紅 16 愛好很少
複製程式碼

不符合識別符號情況

key必須加"",讀取key對應的value只能是obj["key"]

程式碼如下:

let obj = {
    "0": "小明",
    "0name": "小明明", // 這裡會報錯:Invalid or unexpected token(無效標記意外字元)
    "": 18,
    "¥": "哈哈",
    "  ": "愛好廣泛"
}
console.log(obj) // {0: "小明", 0name: "小明明", "": 18, ¥: "哈哈", "  ": "愛好廣泛"}
console.log(obj.0, obj.0name) // 報錯
console.log(obj['0'], obj['0name'], obj[''], obj['¥'], obj['  ']) // 小明 小明明 18 哈哈 愛好廣泛
複製程式碼

另外Symbol型別的值也不符合識別符號,需要這種寫法:obj["key"]