我只在Firefox中对此进行了测试,但显然您可以使用空字符串作为对象中属性的键.例如,请在此处查看第一个属性:
var countsByStatus = {
"": 23, //unknown status
"started": 45,
"draft": 3,
"accepted": 23,
"hold": 2345,
"fixed": 2,
"published": 345
}
Run Code Online (Sandbox Code Playgroud)
在浏览EcmaScript规范时,似乎(至少在5中),属性键被定义为字符串,字符串被定义为0或更多字符.这意味着根据规范,空字符串是有效的属性名称.
无论如何,我很想在一段代码中使用它,我在计算数据项状态的一些计数摘要(类似于我上面所示).有些项目可能没有状态,我需要一个占位符.由于状态是用户可定义的,我不想冒险使用可能冲突的虚拟词.
它看起来如此简单和优雅,在查看数据时我可以很容易地判断空字符串是什么意思.它还使代码更有效,因为空字符串将是没有状态的项目中状态的确切值.
但与此同时,我的直觉告诉我它出了问题.我的意思是,除了某些浏览器可能不支持这种情况的机会之外,我觉得我在JavaScript中遇到了一个将在某天修复的错误.但是,与此同时,我曾经对我现在每天使用的许多其他JavaScript功能产生了同样的感觉(例如我发现&&和||返回其中一个操作数的值的时间,而不仅仅是对或错).
javascript ×1