成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

javascript中為什么Math.min()比Math.max()大

這篇文章給大家分享的是有關(guān)javascript中為什么Math.min()比Math.max()大的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:申請域名、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、殷都網(wǎng)站維護、網(wǎng)站推廣。

為什么很多人會有這種疑惑,是因為犯了想當(dāng)然的錯誤——望文生義。Math.min() 作為一個函數(shù),返回的并不是最小值;同理 Math.max() 返回的也不是最大值。他們返回的是參數(shù)的最大值和最小值,而我們卻沒有傳遞任何參數(shù)。

javascript 中數(shù)值的最大值和最小值常量分別是 Number.MAX_VALUE 和 Number.MIN_VALUE,在我電腦 V8 的運行結(jié)果是 1.7976931348623157e+308 和 5e-324。

這里也有一個坑,那就是 MIN_VALUE 并不是最小的數(shù),而是絕對值最小的數(shù),它是一個正數(shù)。而 Math.min() 的返回值比 Number.MAX_VALUE 還要大。

Math.min() 返回了 Infinity,這個值對應(yīng)了 Number.POSITIVE_INFINITY 常量。Math.max() 返回了 -Infinity,這個值對應(yīng)了 Number.NEGATIVE_INFINITY 常量。

就像數(shù)學(xué)里面那樣,正無窮和負無窮并不是確切的數(shù),只是集合里面的概念。我們可以使用 0 減去正無窮來得到負無窮:0 - Infinity = -Infinity,或者通過 0 減去負無窮來得到正無窮:0 - (-Infinity) = Infinity。但是我們把正無窮和負無窮相加卻得不到 0,事實上我們得到的是 NaN。

當(dāng)我們真正明白了 Math.min 和 Math.max 只是返回了所有參數(shù)的最大值,就很容易理解這個看似匪夷所思的結(jié)果了。

本來想查看 V8 的源碼,但是搜索了一圈,也只找到了幾個測試用例(文件: test/mjsunit/math-min-max.js):

assertEquals(Infinity, Math.min());    

assertEquals(1, Math.min(1));    

assertEquals(1, Math.min(1, 2));    

assertEquals(1, Math.min(2, 1));    

assertEquals(1, Math.min(1, 2, 3));    

assertEquals(1, Math.min(3, 2, 1));    

assertEquals(1, Math.min(2, 3, 1));    

從此測試用例中可以看出,Math.min() 確實返回了 Infinity。繼續(xù)閱讀此測試用例還會發(fā)現(xiàn)更有意思的事:

assertEquals(-Infinity, Infinity / Math.min(-0, +0));    

assertEquals(-Infinity, Infinity / Math.min(+0, -0));    

assertEquals(-Infinity, Infinity / Math.min(+0, -0, 1));    

對比下面的結(jié)果:

assertEquals(Infinity, Infinity / Math.max(-0, +0));    

assertEquals(Infinity, Infinity / Math.max(+0, -0));    

assertEquals(Infinity, Infinity / Math.max(+0, -0, -1));

也就是說在 Math.min 和 Math.max 進行數(shù)值比較(javascript不分整型和浮點型)時,負零是小于正零的。

-0、+0、-Infinity、+Infinity、NaN 這幾個概念就可以講上一天一夜了,篇幅有限就不展開講了,以后有時間再填坑。

言歸正傳,現(xiàn)在我們換個思路,試著從算法的角度去考慮最大值和最小值的問題。

我們?nèi)绾吻?N 個參數(shù)的最大值呢?為了描述簡單我們使用數(shù)組(感謝 @f2er前端百科)

var max = ___;

arr.forEach(function(n) {

    if(n > max) {

        max = n;

    }

});

如果是填空題,你會在空格處填什么呢?如此想來,這個返回值就很合理了。

本來以為是無參調(diào)用時返回了運算的幺元,后來細琢磨,好像沒有什么關(guān)系,2333

對于運算集合 S 上的二元運算*,如果滿足 a*x = x*a = x,則 a 是*運算的幺元。加法運算的幺元是 0,因為 0+x = x+0 = x。乘法運算的幺元是 1,因為 1*x = x*1 = x。但是我們定義函數(shù) add() 或者 mult() 函數(shù),如果不傳遞參數(shù)時,返回幺元的話也是不合理的。

感謝各位的閱讀!關(guān)于“javascript中為什么Math.min()比Math.max()大”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

標題名稱:javascript中為什么Math.min()比Math.max()大
URL分享:http://jinyejixie.com/article20/gdpejo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)企業(yè)網(wǎng)站制作、商城網(wǎng)站ChatGPT、網(wǎng)頁設(shè)計公司、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
当阳市| 西藏| 安龙县| 自治县| 西青区| 正安县| 枞阳县| 清镇市| 汉源县| 长丰县| 石渠县| 怀远县| 彭州市| 东辽县| 鹤山市| 海兴县| 沙坪坝区| 鄂托克前旗| 中牟县| 班玛县| 德庆县| 育儿| 泰顺县| 喀喇| 墨玉县| 辛集市| 延吉市| 景德镇市| 班戈县| 日喀则市| 库车县| 长白| 辰溪县| 宜丰县| 芮城县| 大城县| 和政县| 佛山市| 巴里| 礼泉县| 淄博市|