我遇到了某人的舊代碼,其變量標識爲:@ 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. 顯示以變量開頭的div
- 3. 檢查一個JS變量是否以數字開頭的最快方法
- 4. $開頭和以可變
- 5. 表格變量名稱可以以數字字符開頭嗎?
- 6. 查找以用戶給出的變量開頭的文件
- 7. 從頭開始的ID:雲變量
- 8. 緩存行開頭的變量
- 9. 開關頭中的變量聲明?
- 10. 在URL開頭的變量AngularJS路由
- 11. 命名以m_開頭的成員變量符合javabean樣式?
- 12. 爲什麼變量以數字開頭是非法的?
- 13. 正則表達式 - 在javascript中以$開頭的匹配變量?
- 14. 重命名變量名稱以SAS中的數字開頭
- 15. parseJSON丟棄以下劃線開頭的變量
- 16. 選擇變量x以65開頭的行(teradata)
- 17. JSHint - 忽略以字符串開頭的變量
- 18. 以前綴'the'開頭的變量名稱
- 19. 從_開頭的javascript變量可以推斷出什麼?
- 20. 獲取以某些文本開頭的所有$ _POST變量
- 21. PHP反向引用,然後是以數字開頭的變量
- 22. JS可變變量可以從閉包
- 23. 爲什麼變量不能以數字開頭?
- 24. csh腳本錯誤:變量名稱必須以字母開頭
- 25. 從Firefox插件公開js變量
- 26. 變量變量在JS
- 27. 以React開頭
- 28. 以sshj開頭
- 29. 的js變量JSON
- 30. JS變量名
你舒爾,這不是一個產生的評論,解釋有關某一功能的東西(的功能,參數)? – 2012-04-24 18:58:25
他們有可能將這些令牌替換爲服務器端。 – simshaun 2012-04-24 18:58:57
即使它在一些隨機JS引擎中工作,也無所謂,因爲它在大多數情況下都不起作用。不要這樣做。 – 2012-04-24 18:59:13