gpt4 book ai didi

javascript - 为什么 JS hash/dict 中的 "key"部分应该是一个字符串?

转载 作者:数据小太阳 更新时间:2023-10-29 05:13:58 25 4
gpt4 key购买 nike

在大多数 JSON 序列化器/反序列化器中,javascript 字典/哈希数组中的“键”部分被写为字符串。

使用字符串作为键与仅键入预期名称相比有什么好处?

例如,假设我定义了两个对象 k1k2 如下:

var k1 = { a: 1, b: 2, c: 3 };          // define name normally
var k2 = { "a": 1, "b": 2, "c": 3 }; // define name with a string

然后我运行了以下测试:

alert(k1 == k2);                   // false (of course)

alert(k1.a == k2.a); // true
alert(k1["b"] == k2["b"]); // true

alert(uneval(k1)); // returns the k1 object literal notation.
alert(uneval(k2)); // returns the same string as above line.

alert(uneval(k1) == uneval(k2)); // true

那么像 k2 定义的方式那样让键在双引号(字符串)中有什么意义,而不是像 那样只输入键名k1 被定义了吗?


我刚刚在 Ajaxian 看到了这个指向 Aaron Boodman's blog entry :

chromium.tabs.createTab({
"url": "http://www.google.com/",
"selected": true,
"tabIndex": 3
});

因为他也对 tabIndex 使用驼峰式大小写,所以我看不出使用字符串有任何意义。

为什么不呢:

chromium.tabs.createTab({
url: "http://www.google.com/",
selected: true,
tabIndex: 3
});

为什么 JS 忍者会遵循将 urlselectedtabIndex 转换为字符串的约定?

最佳答案

因为 JSON是实际 JavaScript 文字语法的子集。为了简单地实现 JSON 解析器,字符串周围始终需要双引号,并且由于 JSON 中的键是字符串,所以它们是必需的。

并非所有合法的 JavaScript 都是合法的 JSON。虽然您可以在 JavaScript 中定义不带引号的对象文字,但如果您想要可互操作的 JSON,则需要将它们放入。

关于javascript - 为什么 JS hash/dict 中的 "key"部分应该是一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/727002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com