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によると、オブジェクト プロパティは Identifiers ではなく IdentifierNames です。つまり、予約語は除外されません。

それは良い習慣ですか?おそらく一般的ではありませんが、コードがより明確になるのであれば、そうです。

はい、引用符で囲まれた文字列でプロパティを参照することは、同じ引用符で囲まれていない記号でそれらを参照することと同じです。ただし、引用符で使用できる識別子のセットは、引用符で囲まれていないものより明らかに大きくなります。

于 2012-09-27T10:51:51.770 に答える
-1

これをテストします:

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

JS では Array はオブジェクトなので、両方の構文が適しています。

于 2012-09-27T10:50:08.327 に答える