整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          五種js判斷是否為整數(shù)類型方式

          篇文章主要介紹了五種JavaScript判斷是否為整數(shù)類型方式,需要的朋友可以參考下

          這篇看看如何判斷為整數(shù)類型(Integer),JavaScript中不區(qū)分整數(shù)和浮點數(shù),所有數(shù)字內(nèi)部都采用64位浮點格式表示,和Java的double類型一樣。但實際操作中比如數(shù)組索引、位操作則是基于32位整數(shù)。

          方式一、使用取余運算符判斷

          任何整數(shù)都會被1整除,即余數(shù)是0。利用這個規(guī)則來判斷是否是整數(shù)。

          以上輸出可以看出這個函數(shù)挺好用,但對于字符串和某些特殊值顯得力不從心

          對于空字符串、字符串類型數(shù)字、布爾true、空數(shù)組都返回了true,真是難以接受。對這些類型的內(nèi)部轉(zhuǎn)換細節(jié)感興趣的請參考:JavaScript中奇葩的假值

          因此,需要先判斷下對象是否是數(shù)字,比如加一個typeof

          嗯,這樣比較完美了。

          方式二、使用Math.round、Math.ceil、Math.floor判斷

          整數(shù)取整后還是等于自己。利用這個特性來判斷是否是整數(shù),Math.floor示例,如下

          這個直接把字符串,true,[]屏蔽了,代碼量比上一個函數(shù)還少。

          方式三、通過parseInt判斷

          很不錯,但也有一個缺點

          竟然返回了false,沒天理啊。原因是parseInt在解析整數(shù)之前強迫將第一個參數(shù)解析成字符串。這種方法將數(shù)字轉(zhuǎn)換成整型不是一個好的選擇。

          方式四、通過位運算判斷

          這個函數(shù)很不錯,效率還很高。但有個缺陷,上文提到過,位運算只能處理32位以內(nèi)的數(shù)字,對于超過32位的無能為力,如

          復(fù)制代碼代碼如下:

          isInteger(Math.pow(2, 32)) // 32位以上的數(shù)字返回false了

          當(dāng)然,多數(shù)時候我們不會用到那么大的數(shù)字。

          方式五、ES6提供了Number.isInteger

          目前,最新的Firefox和Chrome已經(jīng)支持。

          以上就是判斷是否為整數(shù)類型的五種方式,這五種方式各有優(yōu)缺點,大家可以進行仔細比較,選擇最優(yōu)的進行使用。



          多時候?qū)τ星岸斯こ處焷碇v,頁面效果直接會轉(zhuǎn)嫁個CSS或JS,對HTML的一些屬性了解的并不充分,接下來介紹一些有意思的HTML屬性。

          1)Multiple

          顧名思義就是在一個輸入標(biāo)簽或選擇標(biāo)簽中可以輸入多個值

          <input type="file" multiple>

          2)Accept

          在<input>包含接受屬性,允許用戶傷上傳指定的文件類型。我們在設(shè)置的過程中,需要設(shè)置指定的文件格式。并用逗號分開即可。傳遞文件類型包含圖片、音頻、視頻、文檔,等自定義文件類型。

          <input type="file" accept=".png, .jpg">

          3)Contenteditable

          這個屬性比較有意思,允許用戶在前端HTML頁面進行對文本的編輯,只對DOM的可見部分進行編輯。

          <div contenteditable="true">我可以隨意編輯!</div>

          4)Spellcheck

          進行拼寫檢查的可編輯段落:

          <p contenteditable="true" spellcheck="true">這是一個段落。</p>

          5) Translate

          Translate告訴瀏覽器是否應(yīng)該翻譯內(nèi)容。例如,您可以使用它來防止Google Translate自動嘗試翻譯您的公司或品牌名稱。

          <footer><p translate="no">Mark</p></footer>

          6) Poster

          帶有預(yù)覽圖(海報圖片)的視頻播放器:

          注釋:Internet Explorer 8 以及更早的版本不支持 <video> 標(biāo)簽。

          <video controls poster="/images/mark.gif">
             <source src="movie.mp4" type="video/mp4">
             <source src="movie.ogg" type="video/ogg">
             Your browser does not support the video tag.
          </video> 

          7) Download

          download 屬性規(guī)定被下載的超鏈接目標(biāo)。

          在 <a> 標(biāo)簽中必須設(shè)置 href 屬性。

          該屬性也可以設(shè)置一個值來規(guī)定下載文件的名稱。所允許的值沒有限制,瀏覽器將自動檢測正確的文件擴展名并添加到文件 (.img, .pdf, .txt, .html, 等等)。

          avaScript 數(shù)據(jù)類型一共有 7 種:Undefined、Null、Boolean、String、Symbol、Number、Object。除了 Object 之外的 6 種屬于原始數(shù)據(jù)類型。有時,我們還會細分 Object 的類型,比如 Array,F(xiàn)unction,Date,RegExp 等。

          判斷方法

          typeof

          typeof 可以用來區(qū)分除了 Null 類型以外的原始數(shù)據(jù)類型,對象類型的可以從普通對象里面識別出函數(shù):

          問題一:typeof 不能識別 null,如何識別 null?

          答案:如果想要判斷是否為 null,可以直接使用===全等運算符來判斷(或者使用下面的Object.prototype.toString 方法):

          問題二:typeof 作用于未定義的變量,會報錯嗎?

          答案:不會報錯,返回"undefined"。

          問題三:typeof Number(1)的返回值是什么?

          答案:"number"。注意 Number 和 String 作為普通函數(shù)調(diào)用的時候,是把參數(shù)轉(zhuǎn)化為相應(yīng)的原始數(shù)據(jù)類型,也就是類似于做一個強制類型轉(zhuǎn)換的操作,而不是默認(rèn)當(dāng)做構(gòu)造函數(shù)調(diào)用。注意和 Array 區(qū)分,Array(...)等價于 new Array(...)

          問題四:typeof new

          Number(1)的返回值是什么?

          答案:"object"。

          instanceof

          instanceof 不能用于判斷原始數(shù)據(jù)類型的數(shù)據(jù):

          instanceof 可以用來判斷對象的類型:

          需要注意的是,instanceof 的結(jié)果并不一定是可靠的,因為在 ECMAScript7 規(guī)范中可以通過自定義 Symbol.hasInstance 方法來覆蓋默認(rèn)行為。

          Object.prototype.toString

          由上面的示例可知,該方法沒有辦法區(qū)分?jǐn)?shù)字類型和數(shù)字對象類型,同理還有字符串類型和字符串對象類型、布爾類型和布爾對象類型,另外,ECMAScript7 規(guī)范定義了符號 Symbol.toStringTag,你可以通過這個符號自定義Object.prototype.toString 方法的行為:

          因為 Object.prototype.toString 方法可以通過 Symbol.toStringTag 屬性來覆蓋默認(rèn)行 為,所以使用這個方法來判斷數(shù)據(jù)類型也不一定是可靠的。

          Array.isArray

          Array.isArray(value)可以用來判斷 value 是否是數(shù)組:


          主站蜘蛛池模板: 久久国产一区二区三区| 国产一区二区在线看| 国产福利精品一区二区| 亚欧免费视频一区二区三区| 国产福利电影一区二区三区,亚洲国模精品一区 | 91无码人妻精品一区二区三区L| 日本人的色道www免费一区| 色久综合网精品一区二区| 夜夜嗨AV一区二区三区| 人妻AV中文字幕一区二区三区 | 无码人妻一区二区三区免费看 | 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 无码少妇一区二区| 丰满人妻一区二区三区免费视频 | 中文乱码字幕高清一区二区| 久久se精品一区二区国产| 国产AV午夜精品一区二区入口| 真实国产乱子伦精品一区二区三区 | 亚洲AV成人精品日韩一区18p| 国产在线观看精品一区二区三区91| 亚洲字幕AV一区二区三区四区 | 中文字幕一区二区视频| 国产高清在线精品一区二区三区| 夜夜精品视频一区二区| 日本一区二区三区不卡在线视频| 天天综合色一区二区三区| 国产色欲AV一区二区三区| 国产福利无码一区在线| 北岛玲在线一区二区| 成人在线视频一区| 亚洲色婷婷一区二区三区| 国产一区二区精品久久| 精品无人区一区二区三区在线 | 国产综合视频在线观看一区| 日韩精品一区二区三区中文字幕| 极品少妇伦理一区二区| 亚洲一区爱区精品无码| 亚洲一区二区免费视频| 久久精品成人一区二区三区 | 国产探花在线精品一区二区| 日韩内射美女人妻一区二区三区|