2016-06-29 48 views
-7

我想知道爲什麼javascript可以使用$(美元符號)作爲函數名稱,但不能使用磅符號(£)。這是否有邏輯或限制?爲什麼javascript不能使用£作爲函數名稱

編輯:這個問題不是給定問題的重複。在這個網站上沒有答案。這就像是「嘿,這是javascript目錄中找到你要找的東西」

+1

到這裏看看:http://stackoverflow.com/questions/1661197/what-c​​haracters-are-valid-for-javascript-variable-names –

+1

***笑出聲來***,你應該稱爲「歐元符號」,因爲它是英國英鎊符號(英國貨幣)和英國**只是投了票離開歐盟(歐元是大多數國家的貨幣) 。順便說一句,「美元」裏有兩個ells。 –

+1

@妮娜 - 沒有特別的理由重新打開它,但我不認爲「爲什麼」是「什麼」的重複。 –

回答

2

不,沒有什麼特別的邏輯,它只是布倫丹艾希在1995年5月的這十天裏決定的規則。全規則are here。 Eich剛剛決定在標識符名稱中允許$會很方便。他還允許_(在編程語言中更常見)以及通常的一組英文字母和數字(數字不能出現在第一個字符中)。

在一個階段,試圖在規範中將retcon $描述爲「僅用於機械生成的代碼」。該語言首次出現在ECMAScript第二版(pdf)中,未出現在第一版(pdf)中。它保留在第3版(pdf)中,然後在5th edition(沒有被接受的第4版)中消失。 This question及其答案解決了這個問題,顯然這是嘗試使用源於Java的約定。但是,人們登上$(不僅僅是John Resig和jQuery,還有Sam Stephenson和PrototypeJS),所以,那艘船已經航行了很長時間,因此從第5版規範中刪除了這種語言。最終,大量的Unicode字符被允許(例如,相當着名的ಠ_ಠ是一個有效的JavaScript標識符),但是ECMAScript第三版(由Mozilla在JavaScript 1.5中實現)的版本要晚得多。

+0

有沒有一個簡單的規則來決定哪些unicodes被允許? – dandavis

+0

@dandavis:*現在*。 Unicode已經更新了兩個字符屬性:'ID_Start'和'ID_Continue'。 JavaScript允許您在標識符名稱的開頭使用具有'ID_Start'屬性的任何字符,並在標識符名稱中使用具有'ID_Continue'的任何字符。由於'ID_Start'和'ID_Continue'沒有引用較早版本的Unicode和[具有更復雜規則]的JavaScript規範的早期版本(http://ecma-international.org/ecma-262/5.1/#sec-7.6)還沒有存在。 –

0

從標準ECMA-262的ECMAScript語言規範

7.6標識符名稱報價和標識符

標識符名稱是根據在「標識符」給出 部的語法解釋的令牌Unicode標準的第5章,修改了一些小的 。標識符是不是 預留字的標識符名稱(見7.6.1)。 Unicode標識符語法基於 Unicode標準規定的規範性和信息性字符類別。 Unicode標準的 版本中的指定類別中的字符必須按照所有符合ECMAScript實現的 類別進行處理。

本標準規定了特定的字符添加: IdentifierName中的任何位置都允許使用美元符號 ($)和下劃線(_)。

+1

問題是「爲什麼」... – dandavis

相關問題