我遇到了某人的旧代码,其变量标识为:@ user_id @,@ reference_id @等等。维基百科说:“在某些JavaScript实现中,at符号(@)可以用于标识符中......”在JS实现中这是起作用的吗?我无法让它工作。以“@”开头的JS变量
0
A
回答
6
这是完全正确的:
var π = Math.PI;
这似乎并非是有效的:如果你感到无聊,想
var $yourName = "Jamund";
:
var @yourName = "Jamund";
这工作虽然学习所有的血淋淋的细节: http://mathiasbynens.be/notes/javascript-identifiers
至于你的具体问题,是的,它可能是在评论中(JavaDoc在其评论中使用@,有时它的风格已被用在JS评论中),或者它意味着被处理并取代服务器端。
6
第7.6章的ECMA-262, 5.1 edition定义了标识符是什么。由于@
不允许,所以即使某些浏览器可能接受它,也不应该使用它。如果可能的话,您应该始终争取在所有浏览器中实现最广泛的兼容性。在标识符中不使用@
不应以任何方式阻碍您。
IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeLetter
$
_
\ UnicodeEscapeSequence
IdentifierPart ::
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
<ZWNJ>
<ZWJ>
0
π是希腊语中使用的标准希腊字符,因此可以用于变量名。规则是您可以使用$ _或除JavaScript关键字以外的任何单词字符。但是,如果您使用访问者,则可以使用包含空字符串的禁止关键字:var forbidden ={}; forbidden[""]="hello";
甚至可以在全局对象上执行此操作:window['@weird name for a variable'] = "There are very few good reasons to do this!!"
,但仅仅因为您可以不一定意味着您应该这样做!以这种方式命名的变量与任何其他变量相同,唯一的限制是必须使用方括号和字符串才能访问这些值。
2
单个@
通常是一个JSDoc参数(如果它在注释块中)。用@
包装这个词听起来像是一个自定义模板功能。但名称前面有@@
通常是本地符号。我不相信你实际上可以在代码中使用它们,但是它们通常在文档中被引用。
E.g.Symbol.iterator
被称为@@iterator
,如:
Array.prototype[@@iterator]()
TypedArray.prototype[@@iterator]()
String.prototype[@@iterator]()
Map.prototype[@@iterator]()
Set.prototype[@@iterator]()
虽然在代码中你会用它作为这样的:
var myArray = [1, 2, 3, 4];
var it = myArray[Symbol.iterator]();
console.log(it.next().value); // 1
console.log(it.next().value); // 2
你也可以看到引用:
@@match
-RegExp.prototype[@@match]()
@@replace
-RegExp.prototype[@@replace]()
@@split
-RegExp.prototype[@@split]()
@@search
-RegExp.prototype[@@search]()
@@species
-Map[@@species]
,Set[@@species]
@@toPrimitive
-Date.prototype[@@toPrimitive](hint)
,Symbol.prototype[@@toPrimitive]()
@@unscopables
-Array.prototype[@@unscopables]
相关问题
- 1. 获取以特定字符串开头的所有JS变量
- 2. 表格变量名称可以以数字字符开头吗?
- 3. 开关头中的变量声明?
- 4. 从_开头的javascript变量可以推断出什么?
- 5. 获取以某些文本开头的所有$ _POST变量
- 6. 命名以m_开头的成员变量符合javabean样式?
- 7. 选择变量x以65开头的行(teradata)
- 8. JSHint - 忽略以字符串开头的变量
- 9. PHP反向引用,然后是以数字开头的变量
- 10. 为什么变量以数字开头是非法的?
- 11. csh脚本错误:变量名称必须以字母开头
- 12. 为什么变量不能以数字开头?
- 13. 如何检查变量是否以特定字符串开头?
- 14. 从Firefox插件公开js变量
- 15. 变量变量在JS
- 16. 的js变量JSON
- 17. 以sshj开头
- 18. JS变量名
- 19. 以形式打印JS变量
- 20. 按歌手名字开头的iTunes歌曲数量以字母开头
- 21. 以Apache Camel开头
- 22. Stacktrace以0x0开头
- 23. 以java voip开头
- 24. 函数用于检查变量的字符串是否以元音开头?
- 25. 跳过以单词开头并结束BY编号的变量[0-9]
- 26. 如何解决名称本身以数字开头的变量名称?
- 27. jsp import&js变量
- 28. JQuery和JS变量
- 29. 以'@'开头的Python行?
- 30. 以子串开头的行
你舒尔,这不是一个产生的评论,解释有关某一功能的东西(的功能,参数)? – 2012-04-24 18:58:25
他们有可能将这些令牌替换为服务器端。 – simshaun 2012-04-24 18:58:57
即使它在一些随机JS引擎中工作,也无所谓,因为它在大多数情况下都不起作用。不要这样做。 – 2012-04-24 18:59:13