为什么在javascript中保留'@'符号,它的目的是什么?

时间:2013-01-21 16:15:28

标签: javascript

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"

有人可以向我解释为什么不允许在变量名中使用'@'符号以及我应该使用它的那些?

1 个答案:

答案 0 :(得分:7)

它不是保留或特殊的,它不是有效的JavaScript标识符字符。出于同样的原因,这有效:

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

这不是:

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

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

Related question