JavaScript 控制台片段:
> obj = {"1": "Hello, World", "2": "Goodbye, World"};
> obj[1]
"Hello, World"
> obj["1"]
"Hello, World"
因此,出于某种原因,如果您有可以转换为整数的键,则也可以使用整数访问相应的值。这非常有用:我正在通过 Ajax 获取 JSON,并且在 JSON 中,将 int 作为散列键是不合法的(或者至少 Python 的 JSON 序列化器是这样认为的)。但是,我需要以整数形式访问它们,这就是我想知道的原因:
- 为什么会这样?
- 可靠吗? (我可以看到它在 Chrome 和 Firefox 上运行,这对我的应用程序来说已经足够了,但我不希望它成为将在下一个版本中修复的一些常见错误)
最佳答案
JavaScript 对象的所有属性都是字符串。请注意此行为:
var foo = {};
foo[foo] = "hello";
console.log( foo["[object Object]"] );
//-> "hello"
foo.toString = function(){ return "sassy" };
foo.sassy = "Oh yes!";
console.log( foo[foo] );
//-> "Oh yes!"
因此,当您设置或获取 foo[1]
时,您实际上是在设置/获取 foo[1.toString()]
。是的,这是可靠的。
关于javascript - 哈希键会自动转换为 int 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5491868/