javascript - 哈希键会自动转换为 int 吗?

标签 javascript json

JavaScript 控制台片段:

> obj = {"1": "Hello, World", "2": "Goodbye, World"};
> obj[1]
  "Hello, World"
> obj["1"]
  "Hello, World"

因此,出于某种原因,如果您有可以转换为整数的键,则也可以使用整数访问相应的值。这非常有用:我正在通过 Ajax 获取 JSON,并且在 JSON 中,将 int 作为散列键是不合法的(或者至少 Python 的 JSON 序列化器是这样认为的)。但是,我需要以整数形式访问它们,这就是我想知道的原因:

  1. 为什么会这样?
  2. 可靠吗? (我可以看到它在 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/

相关文章:

javascript - 使用 JQuery 动态更改 AwesomeIcon 的类

javascript - 检测 css 动画停止

javascript - 如何将一个数组映射到另一个数组并在 Javascript 中重置其键?

php - 将json数据更新到db中

javascript - JSON 未捕获类型错误 : Cannot set property 'innerHTML' of null

javascript - 插入数组的特定位置而不删除JS中的元素

javascript - 通过javascript单击按钮时将var传递给url

json - alamofire.error Code=-6006 “无法序列化 JSON

php - 创建时使用 laravel 返回模型

javascript - 将 JSON 数据打印到 innerHTML 中未定义 - [对象]