0

我遇到过某人的旧代码,其中的变量标识如下:@user_id@、@reference_id@ 等等。Wikipedia 说“在某些 JavaScript 实现中,at 符号 (@) 可以在标识符中使用......”在哪些 JS 实现中可以使用?我无法让它工作。

4

4 回答 4

6

这是完全有效的:

var π = Math.PI;

这似乎无效:

var @yourName = "Jamund";

这虽然有效:

var $yourName = "Jamund";

如果您感到无聊并想了解所有血腥细节: http: //mathiasbynens.be/notes/javascript-identifiers

至于您的具体问题,是的,它可能在评论中(JavaDoc在其评论中使用 @ 并且有时它的样式已在 JS 评论中使用)或者它旨在在服务器端进行处理和替换。

于 2012-04-24T19:03:18.450 回答
6

ECMA-262第 7.6 章第5.1 版定义了标识符是什么。由于@不允许,即使某些浏览器可以接受,您也不应该使用它。如果可能,您应该始终争取在所有浏览器之间实现最广泛的兼容性。不使用@in 标识符不应以任何方式妨碍您。

 IdentifierName ::
     IdentifierStart
     IdentifierName IdentifierPart

 IdentifierStart ::
     UnicodeLetter
     $
     _
     \ UnicodeEscapeSequence

 IdentifierPart ::
     IdentifierStart
     UnicodeCombiningMark
     UnicodeDigit
     UnicodeConnectorPunctuation
     <ZWNJ>
     <ZWJ>
于 2012-04-24T19:03:59.013 回答
2

单个@通常是 JSDoc 参数(如果它在注释块中)。@用听起来像是一个自定义模板功能来包装这个术语。但是前面的名称@@通常是本地符号。我不相信您实际上可以在代码中使用它们,但它们通常在文档中以这种方式被引用。

例如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

您可能还会看到对以下内容的引用:

于 2016-09-02T21:01:33.883 回答
0

π 是在希腊语单词中使用的标准希腊字符,因此可用于变量名。规则是您可以使用 $ _ 或除 JavaScript 关键字之外的任何单词字符。但是,如果您使用访问器,您可以使用包括空字符串在内的禁止关键字:var forbidden ={}; forbidden[""]="hello";您甚至可以在全局对象上执行此操作:window['@weird name for a variable'] = "There are very few good reasons to do this!!"但仅仅因为您可以并不一定意味着您应该这样做!以这种方式命名的变量与任何其他 var 相同,唯一的限制是您必须使用带字符串的方括号来访问这些值。

于 2014-08-31T04:20:19.303 回答