国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

為什么Math.max()>Math.min()的結果是false

sevi_stuo / 3150人閱讀

摘要:的方法和方法分別用于求一系列參數中的最大和最小值,如果傳入的參數不是數字類型,會對該參數利用方法進行類型轉換。

從一道題目說起,下面這個比較的結果是true還是false

javascriptMath.max() > Math.min();

在瀏覽器里測試很快會得知它的結果是false,這跟直觀的理解可不一樣,max怎么不比min大呢?
這就要從Mathmaxmin方法說起了。

Mathmax方法和min方法分別用于求一系列參數中的最大和最小值,如果傳入的參數不是數字類型,會對該參數利用Number方法進行類型轉換。看幾個例子:

javascriptMath.max(1,2,3,4,5); //5
Math.min(2,3,4,5,6); //2

如果參數不是有效數字:

javascriptMath.max(1);                             //1
Math.max(NaN);                           //NaN
Math.max("This is a fucking String");    //NaN
Math.max("5");                           //5
Math.max(true);                          //1
Math.max(undefined);                     //NaN  
Math.max(null);                          //0

接下來考慮一種情況,假如只給Math.maxMath.min方法傳一個參數且參數是有效數字,那返回什么?

javascriptMath.min(5);     //5
Math.max(5);     //5
Math.max(0);     //0
Math.min(0);     //0

吶,如果只有一個有效數字參數的話,返回值就是傳入值;這個似乎很好理解,總共就一個值,沒得比,最大或最小肯定就你了;不過,這可不是“沒得比”的情況,我們來試試真正的“沒得比”的情況,

javascriptMath.max();
Math.min();

這就是開頭題目里的形式,不給它傳任何參數;在控制臺里很容易測試出來他們的值一個是Infinity,一個是-Infinity;

吶,關上控制臺,再想想,哪個的結果是Infinity,哪個的結果是-Infinity
結果是很違反直覺的

javascriptMath.max();  //-Infinity
Math.min();  //Infinity

照這么看,就能知道為什么Math.max()>Math.min()的結果是false了;
但是為什么Math.max()結果是-Infinity,還是很奇怪。
在ECMAScript Language Specification文檔中,也只是強制規定了:

  

If no arguments are given, the result (of max method)is -∞

但是強制記一個知識點是很痛苦的,我希望能找到一個可以解釋得通的思路;最終在這里找到一個我覺得靠譜的解釋,
根據我的二次理解,可以這么解釋:

  

就說Math.max方法,實際上可以認為這個方法有一個隱含的參數,假定這個隱含的參數是x;

  

當我們只傳一個參數有效數字a時,我們寫作:Math.max(a),實際上計算的是Math.max(a,x),當然我們知道它的結果是a

  

同時,無論我們傳入的數字a是什么,它都返回a,那么什么樣的x在跟任意數a比較最大的一個時,永遠返回a呢,那x只能是-Infinity了,這樣,當不傳參數執行Math.max()時,實際上是Math.max(-Infinity);,結果返回-Infinity,這樣就解釋得通了。

  

Math.min()同理。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/85811.html

相關文章

  • 大廠算法面試之leetcode精講3.動態規劃

    摘要:動態規劃問題一定會具備最優子結構,才能通過子問題的最值得到原問題的最值。另外,雖然動態規劃的核心思想就是窮舉求最值,但是問題可以千變萬化,窮舉所有可行解其實并不是一件容易的事,只有列出正確的狀態轉移方程才能正確地窮舉。 大廠算法面試之leetcode精講3.動態規劃視頻教程(高效學習):點擊學習目錄:1.開篇介...

    番茄西紅柿 評論0 收藏2637
  • 怪異JavaScript系列(三)

    摘要:本文的思想源自于在上的演講。我收集這些例子的主要目的是將它們整理并清楚理解它們的原理。著主要是因為大括號也是函數定義語法的一部分。自從年雙十一正式上線,累計處理了億錯誤事件,得到了金山軟件等眾多知名用戶的認可。 譯者按: JavaScript有很多坑,經常一不小心就要寫bug。 原文: What the f*ck JavaScript? 譯者: Fundebug 為了保證可讀性...

    XboxYan 評論0 收藏0
  • 什么 Math.min() 比 Math.max() 大?(續)

    摘要:本來以為是無參調用時返回了運算的幺元,后來細琢磨,好像沒有什么關系,對于運算集合上的二元運算,如果滿足,則是運算的幺元。乘法運算的幺元是,因為。但是我們定義函數或者函數,如果不傳遞參數時,返回幺元的話也是不合理的。 昨天心血來潮寫了一篇文章:為什么Math.min() 比 Math.max() 大? 為什么很多人會有這種疑惑,是因為犯了想當然的錯誤——望文生義。Math.min() 作...

    xiguadada 評論0 收藏0
  • Math.min() 什么Math.max() 大?

    摘要:考慮如下代碼按照常規思路,這段代碼應該輸出,畢竟最小值應該小于最大值。為什么會這樣呢還得去查查的相關文檔。是什么呢是中全局對象的一個屬性,在瀏覽器環境中就是對象的一個屬性,表示無窮大。繼續閱讀為什么比大續 考慮如下代碼: var min = Math.min(); var max = Math.max(); console.log(min < max); 按照常規思路,這段代碼應該輸出...

    hyuan 評論0 收藏0
  • JavaScript中8個常見陷阱

    摘要:然而,不會在年的基礎上加,而只是表示年。閉包這是一個經典的面試題雖然期望輸出,然而實際上卻不會。因為第行的沒有在正確的環境下執行。 譯者按: 漫漫編程路,總有一些坑讓你淚流滿面。 原文: Who said javascript was easy ? 譯者: Fundebug 為了保證可讀性,本文采用意譯而非直譯。另外,本文版權歸原作者所有,翻譯僅用于學習。 這里我們針對JavaScri...

    doodlewind 評論0 收藏0

發表評論

0條評論

sevi_stuo

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<