av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

如何在JavaScript中將數(shù)值轉(zhuǎn)換為Boolean

本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)

JavaScript中如何將數(shù)值轉(zhuǎn)換為Boolean?這篇文章幫你搞定!往下看吧~

字符串

 
 
 
 
  1. conststring = 'string';!!string; // true
  2. Boolean(string); // true

數(shù)值

 
 
 
 
  1. constnumber = 100;!!number; // true
  2. Boolean(number); // true

虛值

在JavaScript中,有6個(gè)虛值。如果將其中任何一個(gè)字符串轉(zhuǎn)換為Boolean,它將變?yōu)閒alse 。

 
 
 
 
  1. false
  2. undefined
  3. null
  4. NaN
  5. 0
  6. "" (empty string)

任何不為虛值的都會(huì)轉(zhuǎn)換為true。

示例

虛值的應(yīng)用:

 
 
 
 
  1. !!false;// false
  2. !!undefined; // false
  3. !!null; // false
  4. !!NaN; // false
  5. !!0; // false
  6. !!''; // false

虛值在Boolean上下文中的應(yīng)用:

 
 
 
 
  1. Boolean(false);// false
  2. Boolean(undefined); // false
  3. Boolean(null); // false
  4. Boolean(NaN); // false
  5. Boolean(0); // false
  6. Boolean(''); // false

當(dāng)心 ‘false’

 
 
 
 
  1. constvalue = 'false';!!value; // true
  2. Boolean(value); // true

注意“false”必須寫(xiě)在引號(hào)之間。雖然是虛值,但實(shí)際上是一個(gè)字符串。大多數(shù)人都不會(huì)在這里中圈套,但還是需要隨時(shí)保持警惕。

圖源:digilentin

如何操作該代碼

首先! 將該值強(qiáng)制轉(zhuǎn)換為Boolean并取反。在上下文中, !value將變回虛值。所以為了將value恢復(fù)成真值,將另一個(gè)“!” 放入操作中,因此這里出現(xiàn)了兩個(gè)!。

 
 
 
 
  1. const value = 'string';!value; //false!!value; // true

速度測(cè)試

boolean vs !!

看起來(lái)像 !! 但測(cè)試速度比Boolean快。

圖源:unsplash

有些人更喜歡Boolean,因?yàn)樗鞔_。但是,KyleSimpson在《你不知道的JavaScript》中提到,這兩者都是明確的。

 
 
 
 
  1. //better (works explicitly):
  2. if (!!a) {
  3. }// also great (works explicitly):
  4. if (Boolean(a)) {
  5. }

這里不會(huì)給你標(biāo)準(zhǔn)答案,你可以按需選擇。筆者會(huì)在個(gè)人開(kāi)發(fā)的項(xiàng)目中繼續(xù)使用!!,其鍵入較少而且筆者對(duì)這種語(yǔ)法有了解。

反之,如果是作為團(tuán)隊(duì)考慮,筆者可能會(huì)選擇Boolean。大多數(shù)開(kāi)發(fā)人員都能更好地理解這一點(diǎn)。無(wú)論選擇哪一個(gè),最重要的是保持代碼一致,不要換來(lái)?yè)Q去,選擇一種并堅(jiān)持下去。

這更像是一種偏好選擇,不要?jiǎng)儕Z自己理解兩種代碼的權(quán)利。

避免newBoolean

使用基元而不是對(duì)象類(lèi)型

 
 
 
 
  1. var str = 'str';// Avoid
  2. typeof new Boolean(str); // object// Preferred
  3. typeof Boolean(str); // boolean
  4. typeof !!str; // boolean

值得注意的是,new Boolean不是boolean,而是布爾值的示例?;容^廉價(jià),相比對(duì)象類(lèi)型應(yīng)優(yōu)先使用。

new Boolean(str) 可以返回對(duì)象類(lèi)型。Boolean(str)只返回boolean的原始值。筆者猜測(cè)Boolean(str)比!!str更快。因?yàn)檫@只是一項(xiàng)操作,但是瀏覽器也有可能實(shí)施優(yōu)化,以便程序員看到 !! 他們知道直接將參數(shù)轉(zhuǎn)換為boolean原始值(而不是實(shí)際執(zhí)行NOT()連續(xù)兩次)。

基元很便宜,它們是不可變的,因此可以共享引用,而不必在實(shí)例上保留任何狀態(tài)。要么true要么false。

但newBoolean(str)是一個(gè)對(duì)象。它有自己的唯一存儲(chǔ)地址,并且可以保存唯一的內(nèi)部狀態(tài)。這意味著它不能只保存對(duì)不可變單例實(shí)例的引用。每次運(yùn)行new Boolean(str) 實(shí)例化都會(huì)產(chǎn)生一個(gè)全新的Boolean()對(duì)象。

使用Boolean構(gòu)造函數(shù)刪除空字符串

CJJ.:這是經(jīng)典示例。如果得到一個(gè)用逗號(hào)分隔的字符串值列表,并且想要過(guò)濾掉空字符串,則可以將Boolean構(gòu)造函數(shù)傳遞給Array.prototype.filter,它將自動(dòng)去除零長(zhǎng)度字符串,而僅保留一個(gè)有效的字符串?dāng)?shù)組。

 
 
 
 
  1. var str= 'some,list,,of,values';
  2. var arr = str.split(',');arr; // [ 'some', 'list', '', 'of', 'values']arr.filter(Boolean); // [ 'some', 'list', 'of', 'values' ]

你學(xué)會(huì)了嗎?


名稱(chēng)欄目:如何在JavaScript中將數(shù)值轉(zhuǎn)換為Boolean
文章URL:http://uogjgqi.cn/article/dpdjchj.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流