什麼是最好的方法,如果可能的話,在Javascript中查看預定義函數的底層代碼。是否有文檔顯示這些代碼是如何編碼的,或是實際查看底層代碼的簡單方法?JavaScript預定義函數(parseInt,parseFloat,isNaN等)的算法
parseInt
parseFloat
isNaN
什麼是最好的方法,如果可能的話,在Javascript中查看預定義函數的底層代碼。是否有文檔顯示這些代碼是如何編碼的,或是實際查看底層代碼的簡單方法?JavaScript預定義函數(parseInt,parseFloat,isNaN等)的算法
parseInt
parseFloat
isNaN
在進一步觀察後,我在ECMAScript規範中發現了這一點。 http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
當parseInt函數調用函數時,採取以下步驟:
當parseFloat函數被調用時,採取以下步驟:
注意parseFloat可能只將字符串的前導部分解釋爲Number值;它將忽略任何不能被解釋爲小數文字符號的一部分的字符,並且沒有指示任何這樣的字符被忽略。
如果參數強制爲NaN,則返回true,否則返回false。
他們是當地的功能,也許編碼到您的JS引擎寫的語言 - 你需要聯繫它的來源。
但是,您可能對描述算法如何工作的EcmaScript specification更感興趣。
如果你幸運的話,對於一些功能你甚至可以找到一個JS的等價物。你會發現它們大多在依據標準測試ES實現的頁面上。
是的這個。需要注意的是這些函數並未在JavaScript_中實現。 'console.log(parseInt)// => function parseInt(){[native code]}' – 2013-03-20 20:42:58
@AlexWayne:實際上,其中一些* *是用JS實現的:http://code.google.com/p/ V8 /源/瀏覽/中繼/ SRC/v8natives。js – Bergi 2013-03-20 20:48:22
我想「some」或「most」會更精確:) – 2013-03-20 20:59:52
這些功能是根據瀏覽器具體實現的,並不是用JS編寫的(除非有人決定用JS編寫瀏覽器引擎)。代碼不能保證在不同的環境中是相同的,儘管它們必須(理論上)遵守ECMAScript規範的行爲。
請注意,這是要遵循的算法,並且每個瀏覽器/ JS引擎分別在本機上實現它,因爲瀏覽器/引擎創建者認爲適合選擇的語言。 – ajp15243 2013-03-20 20:46:35