javascript关联数组中的属性名称“var”

时间:2011-06-13 08:11:17

标签: javascript safari specifications

出于好奇的快速提问:

下面的代码适用于Firefox和Chrome,但不适用于Safari。这个Javascript规范是否被Firefox和Chrome规避了,或者这是Safari的一个怪癖?

 var a = {};
 a.var = "test";
总共

(firefox,safari和chrome)

 a["var"] = "test";
 a.id = "another test";

按预期工作。

干杯, 的Jeroen。

3 个答案:

答案 0 :(得分:5)

var是一个保留关键字,因此在未经引用的情况下使用时可能会中断。

答案 1 :(得分:3)

根据ecmascript规范不允许,

来自ecmascript-262:http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf

7.6.1.1 Keywords
The following tokens are ECMAScript keywords and may not be used as Identifiers in ECMAScript programs.

break, do, instanceof, typeof, case, else, new, var, catch, finally, return, void, continue, for, switch, while, debugger, function, this, with, default, if, throw, delete, in, try

基于该safari是首选行为

答案 2 :(得分:1)

似乎Chrome和Firefox明确区分了标识符(变量,对象,函数等)和对象属性。我尝试了所有保留的单词,作为一个对象,他们“工作”:

var myObject = { new : 30, var: 20 }

您可以访问每个属性,不会抛出任何SyntaxError。