为什么'@';javascript中保留的符号及其用途是什么?
有人能给我解释一下为什么变量名中不允许使用“@”符号以及我应该使用它做什么吗?它不是保留的或特殊的,只是不是有效的javascript标识符字符。出于同样的原因,这种方法也有效:为什么'@';javascript中保留的符号及其用途是什么?,javascript,Javascript,有人能给我解释一下为什么变量名中不允许使用“@”符号以及我应该使用它做什么吗?它不是保留的或特殊的,只是不是有效的javascript标识符字符。出于同样的原因,这种方法也有效: var @foo = 'bar'; // SyntaxError: missing variable name. { '@foo' : 'bar' }; // SyntaxError: invalid label. var obj = { '@foo' : 'bar' }; obj.@foo; // TypeErr
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"
这并不是:
var obj = { 'foo-baz' : 'bar' };
obj['foo-baz'];
有效的javascript标识符必须以字母或$
开头,并且只能包含字母、数字、$
和
。属性名称中的任何其他内容都将强制您使用括号表示法
“。变量名的语法无效。可能是Okay的重复,这很有意义。但是,我知道
-
符号是相减的。@
有什么作用?@idbehold它与符号的作用无关(@
在javascript中没有特殊意义,如果您好奇的话)-根据,对象键必须是字符串文本、数字文本或标识符名称。由于标识符名称中不允许使用@
、-
等,因此它们必须用引号括起来才能成为字符串文字。谢谢,先生。完美的解释。
var obj = { 'foo-baz' : 'bar' };
obj.foo-baz;