如果我在javascript中定义了一个新对象,则与var myobject = {}
预期的一样,我将有一个空对象。但是,我无法理解其背后的逻辑。请注意,这一切都可行,但我不明白,比其他任何事情都更有趣:
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
因为它们以数字开头,但是我也不能这样做myobject['0023122']
,因此我假设将数字0023122转换为带有键的属性,9810
因为我可以这样做myobject['9810']
并获取结果。
令人着迷的是,我可以做到myobject[99999]
,myobject['99999']
因此javascript不需要拒绝我的密钥,尽管我丢失了前导零。我说的不是出了什么问题,并有权这样做,究竟什么是对数的原因0023122
转换为9810
同时 甚至 0023123
皈依优雅地23123正如 0099999
皈依99999
Javascript支持八进制数字:
八进制正数必须以0(零)开头,后跟八进制数字。
0023122(八进制)是9810(十进制)
因此,所有位数小于8且以0开头的数字都将转换为八进制。
如果它是8或9,则它以0开头将被截断。
091-> 91
但
071-> 57
当然,如果您使用字符串键,则无需担心:
myobject["001111"] = "001111"
myobject[001111] = 585
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句