亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何根據對象屬性的值創建動態變量名稱

如何根據對象屬性的值創建動態變量名稱

www說 2023-03-18 16:50:26
如何根據對象屬性的值創建動態變量名稱。例如:let imgdata = {   serverid: 6,   name: 'test.jpg'}//this does not work let [imgdata.serverid] = imgdata//Obviously this won't workmyArr.push([imgdata.serverid])基本上我想要“imgdata.serverid”值即。"6" = imgdata.誰能幫我解決這個問題?
查看完整描述

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) 更改該值。


查看完整回答
反對 回復 2023-03-18
?
慕碼人2483693

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。


查看完整回答
反對 回復 2023-03-18
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

這會給serverid = 6。


imgdata所以object你需要用于object解構


let imgdata = {

   serverid: 6,

   name: 'test.jpg'

}


let {serverid} = imgdata;


查看完整回答
反對 回復 2023-03-18
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

imgdata.serverid應該是右邊的表達式。

let serverid = imgdata.serverid;


查看完整回答
反對 回復 2023-03-18
  • 4 回答
  • 0 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號