如果我在javascript中定义了一个新对象,使用var myobject = {}
我将有一个空对象,如预期的那样。但是,我不明白这背后的逻辑。请注意,所有的工作,但我不明白这一点,更多的是逗比什么都重要:关于JavaScript对象键的困惑
var myobject = {}; // Object{}
myobject[001] = "001"; // Object {1: "001"}, So 001 turns to 1
myobject[0099999] = "0099999"; // Object {1: "001", 99999: "0099999"}
//Last line only makes sense after this one (shortened version)▼
myobject[0023122] = "0023122" // Object {... 9810: "0023122" ...}
我知道,因为他们开始以一个数字我不能myobject.0023122
访问这些属性,但我可以” t通过这样做myobject['0023122']
要么所以我假设数字0023122转换为财产与一个密钥9810
因为我可以做myobject['9810']
并得到结果。
有趣的是,我可以做myobject[99999]
和myobject['99999']
所以JavaScript不需要拒绝我的密钥,虽然我失去了我的前导零。我说的不是出了什么问题,并有权这样做,正是针对数0023122
的原因转换为9810
而
甚至
0023123
优雅地转换为23123正如
0099999
转换为99999
- 我假设它的数量太大了,这就是为什么我尝试使用更大的一个。
- 如果删除了前导零的关键变成了“23123”
它被转换,然后它成为一个关键。引用它来保存零。无论如何,所有的对象键都是字符串,所以只需从strign开始,避免你演示的问题。 – dandavis 2014-10-02 22:20:29
解决方案是“严格使用”。 – elclanrs 2014-10-02 22:21:44
@elclanrs:如何严格影响数字上的额外前导零?零仍然会被扔掉,他们只是不会留下一个八进制... – dandavis 2014-10-02 22:22:17