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