为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信