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;

有效的 javascript 标识符必须以字母 or 开头$,并且只能包含字母、数字$、和_。属性名称中的任何其他内容都会强制您使用括号表示法。

相关问题

于 2013-01-21T16:18:14.207 回答