JS物件中的key要不要帶引號
阿新 • • 發佈:2022-04-15
參考文件:
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"]
。