8
var @foo = 'bar';
// SyntaxError: missing variable name.

{ '@foo' : 'bar' };
// SyntaxError: invalid label.

var obj = { '@foo' : 'bar' };
obj.@foo;
// TypeError: can't convert AttributeName to string

var obj = { '@foo' : 'bar' };
obj['@foo'];
// "bar"

変数名に「@」記号を使用できない理由と、それを何に使用する必要があるのか​​、誰かに説明してもらえますか?

4

1 に答える 1

7

これは予約済みでも特別なものでもありません。有効なjavascript識別子文字ではありません。同じ理由で、これは機能します。

var obj = { 'foo-baz' : 'bar' };
obj['foo-baz'];

そして、これはしません:

var obj = { 'foo-baz' : 'bar' };
obj.foo-baz;

有効なJavaScriptIDは、文字またはで始まる必要があり、文字、数字、、、および$のみを含めることができます。プロパティ名にそれ以外のものがあると、角かっこ表記を使用する必要があります。$_

関連する質問

于 2013-01-21T16:18:14.207 に答える