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"
有人可以向我解释为什么不允许在变量名中使用'@'符号以及我应该使用它的那些?
答案 0 :(得分:7)
它不是保留或特殊的,它不是有效的JavaScript标识符字符。出于同样的原因,这有效:
var obj = { 'foo-baz' : 'bar' };
obj['foo-baz'];
这不是:
var obj = { 'foo-baz' : 'bar' };
obj.foo-baz;
有效的JavaScript标识符必须以字母或$
开头,并且只能包含字母,数字,$
和_
。属性名称中的任何其他内容都将强制您使用括号表示法。