這篇文章跟大家介紹一下Math.max()不帶參數會回傳什麼?為什麼?有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。
Math.max()
是 JS 內建的方法,可以從傳入的參數中,傳回最大的一個。例如:
Math.max(1, 2, 3); // => 3
如果Math.max()
只使用一個參數,結果是怎麼樣的?
Math.max(1); // => 1
如預期的那樣,一個數字的最大值就是它本身。
但是,如果呼叫不帶參數 Math.max()
結果又是怎麼樣的呢?
Math.max(); // => -Infinity
不含參數的 Math.max()
傳回的結果是 -Infinity
,接下來,我們來看看為什麼會這樣。
在探討這個問題之前,我們先來Math.max()
是如何從陣列中得到最大值的。
Math.max(num1, num2, ..., numN)
接受多個數字參數,並傳回它們的最大數量。
如果想從陣列中取得最大值,我們可以使用展開運算子:
const numbers1 = [1, 2, 3]; Math.max(...numbers1); // => 3
現在,讓我們來看看有趣的事情,給定兩個數組,我們先確定每個數組中的最大值,然後在從獲取這兩個最大值在確定出其中的最大值。
const numbers1 = [1, 2, 3]; const numbers2 = [0, 6]; const max1 = Math.max(...numbers1); const max2 = Math.max(...numbers2); max1; // 3 max2; // 6 Math.max(max1, max2); // => 6
陣列[1, 2, 3]
最大值是3,陣列[0, 6]
大最值是6,最後 3 和 6 的最大數值是 6.
沒毛病,我們繼續。
如果一個陣列是空的,結果又會是怎麼樣的, 我們動手試試:
const numbers1 = []; const numbers2 = [0, 6]; const max1 = Math.max(...numbers1); const max2 = Math.max(...numbers2); max1; // -Infinity max2; // 6 Math.max(max1, max2); // => 6
現在,當第一個陣列為空時,上面的最大值也是 6
。
這裡比較有趣的是Math.max(...numbers1)
的回傳值,當numbers1
陣列為空時,這與呼叫不帶參數的Math.max()
相同,結果是-Infinity
。
所以 Math.max(max1,max2)
等價於 Math.max(-Infinity, 6)
,結果為6。
現在就知道為什麼Math.max()
在不帶參數的情況下呼叫時回傳-Infinity:
這是在一個空集合上定義 max
函數的一種方式。
這與加法類似,max的-Infinity
和加法的0
是一樣的。
Math.min()
也具有相同的行為-當不帶參數呼叫時,它將傳回Infinity
。
關於對實數的最大運算,-Infinity
稱為Identity元素
到這裡本文就完啦,這裡來個挑戰:你能否寫出一個與Math.max()
完全一樣的sum(num1, num2, ..., numN)
函數,它的功能就是求所有元素的和,
Identity元素是什麼,有懂的沒,歡迎留言補充一下知識點。
英文原文網址:https://dmitripavlun.com/javscript-math-max-infinity/
作者:Dmitri Pavlutin
#譯者:前端小智
更多程式相關知識,請造訪:程式設計入門! !
以上是Math.max()不帶參數會回傳什麼?為什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!