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

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

javascript 數字屬性名稱究竟是如何工作的?

javascript 數字屬性名稱究竟是如何工作的?

慕萊塢森 2022-01-07 19:22:38
有人可以解釋這種行為嗎?const obj = {};obj[0] = 0;console.log(obj['0']);  // 0obj[0.1] = 0.1;console.log(obj['0.1']);  // 0.1obj[1.0] = 1.0;console.log(obj['1.0']);  // undefined似乎javascript將字符串整數轉換為整數,但不完全是它在計算中的工作方式。由于 string'1.0'應該與1.也可以為數字0和字符串的一個對象設置 2 個不同的屬性"0"嗎?在進行對象查找時,我可以避免 javascript 將字符串轉換為數字嗎?
查看完整描述

1 回答

?
慕勒3428872

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

JavaScript屬性名稱是所有的字符串。


在這一行:


obj[1.0] = 1.0;

1.0首先被強制為字符串值'1',然后1.0被賦值給obj['1'].


如果您傳入一個數字而不是字符串 value ,您可以以同樣的方式檢索它1.0。相同的字符串轉換將應用于屬性檢索:


const obj = {};


obj[1.0] = 1.0;


console.log(obj[1.0]);  // 1

但是,屬性名稱是字符串的事實在這里有點無關緊要。即使它具有實際的數字屬性名稱,1.0也會計算為數字,1并且obj[1]無論如何都會分配值。


是否可以為一個數字 0 和字符串“0”的對象設置 2 個不同的屬性?在進行對象查找時,我可以避免 javascript 將字符串轉換為數字嗎?


沒有,0并且'0'兩者計算結果為屬性名'0'。


查看完整回答
反對 回復 2022-01-07
  • 1 回答
  • 0 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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