2016-05-25 37 views
7

我想寫array.some(Boolean)作爲測試array中是否有任何元素是真的。JavaScript:布爾對象可以用作回調函數嗎?

以這種方式使用Boolean對象有任何問題嗎?它是否在現代瀏覽器中具有相同的行爲?它總是等於array.some(function(elem) { return !!elem; })

+1

據我所知,這個功能是強制轉換爲布爾任意值。任何函數也是一個對象,所以布爾作爲一個對象應該不成問題。 – sielakos

+0

當然,有幽默感的人可以用'Boolean = function(){return true;'覆蓋布爾函數。 };'。除此之外,不應有禁忌症。 –

回答

7

以這種方式使用Boolean對象有任何問題嗎?

否與parseInt例如(這會有問題),Boolean只需要一個參數。所以在傳遞其他回調參數(索引和數組)時不應該有任何問題,它會簡單地忽略它們。

在現代瀏覽器中它有相同的行爲嗎?

我確實希望如此。如果你不能相信Boolean功能,還剩下什麼?

它總是等於array.some(function(elem) { return !!elem; })嗎?

是的。從spec

Boolean時被稱爲一個函數,而不是作爲構造,它執行一個類型轉換。

這基本上就是!!所做的。從規格


相關參考文獻:

相關問題