JavaScript 文字键

标签 javascript

如果只有 JavaScript 字符串和数字可以作为对象文字键,有人可以解释为什么这在控制台中有效吗?

var obj = {null: 0, true: 1, false: -1}
> Object {null: 0, true: 1, false: -1}
obj.null
> 0
obj.true
> 1
obj.false
> -1

最佳答案

您的 key 不是 nulltrue但是"null""true" .

请注意,这不是转化{key:value}符号是另一种写法 {"key":value} . object literal 中的键没有发生转换表示法,当键是有效的 JavaScript 标识符时,引号是可选的(null 就是这种情况)。

这与使用方括号表示法(即 obj[true]=1)时发生的情况截然不同:任何不是字符串的内容都将转换为字符串,以便在这种情况下用作键。

这种区别在这里并不明显,但在其他情况下可能很重要:你会得到一些非常不同的东西

var a = {eval:1}; // no conversion, the key is "eval"

var a = {};
a[eval] = 1; // conversion, the key is eval.toString()

这将是相同的(没有跨浏览器保证)

var a = {"function eval() { [native code] }":1};

同时

var a = {true:1};

相当于

var a = {};
a[true] = 1;

关于JavaScript 文字键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25292899/

相关文章:

javascript - Netlify 和 React Vite : Netlify says "Page not found" upon reloading in Vite and React site

javascript - 数组解构时未定义不是一个函数

javascript - 选中所有复选框并隐藏

javascript - 通过引用传递对象到返回的函数

javascript - 如何使用insertBefore添加新元素?

javascript - 如何使用knockout.js恢复模板中的数据

javascript - 动态加载 rel 属性中的链接。

javascript - 在 html div 中单击图像时触发 javascript 函数

javascript - jQuery .on() 事件不适用于 :lt() selector

javascript - 隐藏的 anchor 链接一旦显示就落在下一行