0

根据此页面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'
};
4

2 回答 2

2

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

这是好习惯吗?可能不是一般情况,但如果它使您的代码更清晰,那么是的。

是的,使用带引号的字符串引用属性等同于使用相同的不带引号的符号来引用它们——但是您可以使用带引号的标识符集显然大于可以使用不带引号的标识符。

于 2012-09-27T10:51:51.770 回答
-1

测试一下:

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

在 JS 中,数组是对象,所以这两种语法都很好。

于 2012-09-27T10:50:08.327 回答