4 回答

TA貢獻1784條經驗 獲得超8個贊
變量名的規則是:
1 - They must be unique to the scope
2 - They must start with a letter, $ or _
3 - They are case-sensitive - so, y and Y are two different variables
4 - They must not be keywords/reserved words - such as "if", "return", "class" etc
6 或“6”的變量名不符合這些規則。
此外,6 或“6”很容易被誤解。
例如,如果我們假設以下運行沒有錯誤(當然不會):
let 6 = imgdata;
let "7" = imgdata2;
let a = 6;
let b = "7";
你認為 a 和 b 會有什么值?6 和“7”,當然不是 imgdata 和 imgdata2。
而且,javascript 將如何解釋:
let 6 = 7;
let "a" = "b";
?而且,如果你能做到這一點,從那時起數學將如何運作?例如,您不能使用計數器或交互變量,因為一旦它們達到 6,下一個數字就會是 8,因為 6=7 且 7+1 = 8。
這里的要點是字母在字符串內有含義但在字符串外沒有意義,因此可以安全地用于變量名(在上述規則內)。但是,數字可以是字符串或數字的一部分。因此,123 和“123”可能看起來相同,但它們是不同類型的對象——一個數字和一個字符串——兩者都是完全有效的。然而,abc 和 "abc" 也可能看起來相同,但 abc 沒有任何意義,除非它之前被定義為一個變量,而 "abc" 是一個字符串 - 因此,如果 abc 沒有被定義, let x = abc 將觸發錯誤定義為變量,但 let x = "abc" 是完全有效的。
您將需要使用另一種方法來存儲您的值或使用 window["xxx" + imgdata.serverid] 格式的有效變量名稱(如果您仍然需要動態變量名稱并將“xxx”替換為您選擇的前綴). 我的建議是使用地圖——鍵是 imgdata.serverid,它的值是 imgdata。這樣,您始終可以使用 mymap.get(6) 檢索值;映射鍵可以是字符串或數字,您可以在同一個映射中使用這兩種鍵——您只需要記住 mymap.get(6) 和 mymap.get("6") 將指向不同的映射條目。而且,您可以隨時使用 mymap.set(6, newvalue) 更改該值。

TA貢獻1860條經驗 獲得超9個贊
“6”不是有效變量,但如果您選擇一個可以作為有效變量的值,則可以完成此操作,但僅限于 widnow。我重復“僅使用窗口對象”,否則無法在 Javascript 中創建動態變量。
let imgdata = {
serverid: 'hello',
name: 'test'
};
window[imgdata.serverid] = imgdata;
console.log(hello);
hello是 的值imgdata.serverid,這里hello將成為 的屬性window object。這是一個 JS 特性,我們可以在window object's property沒有窗口的情況下調用 any,就像window.console可以調用 as一樣console。

TA貢獻1869條經驗 獲得超4個贊
這會給serverid = 6。
imgdata所以object你需要用于object解構
let imgdata = {
serverid: 6,
name: 'test.jpg'
}
let {serverid} = imgdata;
添加回答
舉報