猿问

javascript 数字属性名称究竟是如何工作的?

有人可以解释这种行为吗?


const obj = {};


obj[0] = 0;


console.log(obj['0']);  // 0


obj[0.1] = 0.1;


console.log(obj['0.1']);  // 0.1


obj[1.0] = 1.0;


console.log(obj['1.0']);  // undefined

似乎javascript将字符串整数转换为整数,但不完全是它在计算中的工作方式。由于 string'1.0'应该与1.


也可以为数字0和字符串的一个对象设置 2 个不同的属性"0"吗?在进行对象查找时,我可以避免 javascript 将字符串转换为数字吗?


慕莱坞森
浏览 146回答 1
1回答

慕勒3428872

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'。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答