考慮以下功能:在JavaScript中檢查函數參數的標準方法是什麼?
function interpolate(color1, color2, progress) {};
所有參數都必須被傳遞,顏色1和顏色2必須是我的顏色對象的實例和進步必須是一個數字。
檢查類型或簡單地在邏輯中包裝try/catch塊並查看它是否失敗會更快嗎?
如果確實失敗了,我可以檢查所有參數是否存在並且正確,並提出描述性的預期。
考慮以下功能:在JavaScript中檢查函數參數的標準方法是什麼?
function interpolate(color1, color2, progress) {};
所有參數都必須被傳遞,顏色1和顏色2必須是我的顏色對象的實例和進步必須是一個數字。
檢查類型或簡單地在邏輯中包裝try/catch塊並查看它是否失敗會更快嗎?
如果確實失敗了,我可以檢查所有參數是否存在並且正確,並提出描述性的預期。
我認爲最好不要依靠try/catch
來捕捉不正確的參數,而是快速失敗並進行檢查。
您可以檢查所有參數都通過檢查arguments
的length
屬性傳遞,你可以看到一個函數簽名多少個參數,通過檢查功能的length
財產問題:
function interpolate(color1, color2, progress) {
if (arguments.length !== arguments.callee.length) {
throw "wrong number of arguments passed";
}
};
現在是a case of checking that color1
and color2
are objects of the type you expect和check that progress is a number。
圍繞這個函數的邏輯放一個try/catch似乎是爲了尋求麻煩;很難孤立實際存在的問題。所以「它是否更快......」可能是錯誤的問題。從一開始就檢查參數會更容易,也更健壯,除非您確實發現代碼的這部分中存在性能問題,否則您可能不應該擔心速度。 –
我的功能只是一個例子,但它可以用在動畫例程中,每秒調用多次。現在檢查參數類型與插值邏輯的開銷可能可以忽略不計,但我不知道不幸。 – Jules