javascript中对象文字中允许/推荐的属性名称

时间:2012-09-27 10:47:01

标签: javascript

根据此页面https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Reserved_Words

你不能将这些保留字用作变量,但是你可以这样使用它们:

var test = {
    break : 'whatever',
    case : 'whatever',
    if : 'whatever',
    in : 'whatever'
    //etc
};

我这里有一个小提琴http://jsfiddle.net/9RQ9j/4/

我没有错误定义它们或像这样调用实例

console.log(test.if)

所以对我来说似乎有可能,但是它与javascript规范有冲突吗?然后,它似乎至少像我测试的所有浏览器(大多数)都违反规范并允许你使用这些词。

(更新:似乎在IE 8 +中可能失败了其他IE)

这是不是很好的做法?

最后一个问题:这样可以吗?

var test = {
    'break' : 'whatever',
    'case' : 'whatever',
    'if' : 'whatever',
    'in' : 'whatever'
};

2 个答案:

答案 0 :(得分:2)

根据ES5 Spec,对象属性是IdentifierNames,而不是Identifiers,这意味着它们不会排除保留字。

这是好的做法吗?可能不是一般的,但如果它使你的代码更清晰,那么是的。

是的,使用带引号的字符串引用属性相当于使用相同的不带引号的符号引用它们 - 但是您可以引用的标识符集明显大于可以使用未引用的字符串。

答案 1 :(得分:-1)

测试一下:

console.log(test['if']);

在JS中,Array是对象,因此两种语法都很好。