如何在JavaScript中將數值轉換為Boolean

2020-12-03 讀芯術

全文共1396字,預計學習時長7分鐘

JavaScript中如何將數值轉換為Boolean?這篇文章幫你搞定!往下看吧~

字符串

conststring = 'string';!!string; // true

Boolean(string); // true

數值

constnumber = 100;!!number; // true

Boolean(number); // true

虛值

在JavaScript中,有6個虛值。如果將其中任何一個字符串轉換為Boolean,它將變為false 。

false

undefined

null

NaN

"" (empty string)

任何不為虛值的都會轉換為true。

示例

虛值的應用:

!!false;// false

!!undefined; // false

!!null; // false

!!NaN; // false

!!0; // false

!!''; // false

虛值在Boolean上下文中的應用:

Boolean(false);// false

Boolean(undefined); // false

Boolean(null); // false

Boolean(NaN); // false

Boolean(0); // false

Boolean(''); // false

當心 『false』

constvalue = 'false';!!value; // true

Boolean(value); // true

注意「false」必須寫在引號之間。雖然是虛值,但實際上是一個字符串。大多數人都不會在這裡中圈套,但還是需要隨時保持警惕。

如何操作該代碼

首先! 將該值強制轉換為Boolean並取反。在上下文中, !value將變回虛值。所以為了將value恢復成真值,將另一個「!」 放入操作中,因此這裡出現了兩個!。

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

速度測試

boolean vs !!

看起來像 !! 但測試速度比Boolean快。

有些人更喜歡Boolean,因為它更明確。但是,KyleSimpson在《你不知道的JavaScript》中提到,這兩者都是明確的。

//better (works explicitly):

if (!!a) {

}// also great (works explicitly):

if (Boolean(a)) {

}

這裡不會給你標準答案,你可以按需選擇。筆者會在個人開發的項目中繼續使用!!,其鍵入較少而且筆者對這種語法有了解。

反之,如果是作為團隊考慮,筆者可能會選擇Boolean。大多數開發人員都能更好地理解這一點。無論選擇哪一個,最重要的是保持代碼一致,不要換來換去,選擇一種並堅持下去。

這更像是一種偏好選擇,不要剝奪自己理解兩種代碼的權利。

避免newBoolean

使用基元而不是對象類型

var str = 'str';// Avoid

typeof new Boolean(str); // object// Preferred

typeof Boolean(str); // boolean

typeof !!str; // boolean

CJJ.:值得注意的是,new Boolean不是boolean,而是布爾值的示例。基元比較廉價,相比對象類型應優先使用。

CJJ.:new Boolean(str) 可以返回對象類型。Boolean(str)只返回boolean的原始值。筆者猜測Boolean(str)比!!str更快。因為這只是一項操作,但是瀏覽器也有可能實施優化,以便程式設計師看到 !! 他們知道直接將參數轉換為boolean原始值(而不是實際執行NOT()連續兩次)。

CJJ.:基元很便宜,它們是不可變的,因此可以共享引用,而不必在實例上保留任何狀態。要麼true要麼false。

但newBoolean(str)是一個對象。它有自己的唯一存儲地址,並且可以保存唯一的內部狀態。這意味著它不能只保存對不可變單例實例的引用。每次運行new Boolean(str) 實例化都會產生一個全新的Boolean()對象。

特别致謝:CJJ

使用Boolean構造函數刪除空字符串

CJJ.:這是經典示例。如果得到一個用逗號分隔的字符串值列表,並且想要過濾掉空字符串,則可以將Boolean構造函數傳遞給Array.prototype.filter,它將自動去除零長度字符串,而僅保留一個有效的字符串數組。

var str= 'some,list,,of,values';

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

特别致謝:CJJ

你學會了嗎?

留言點讚關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範

相關焦點

  • 細說javascript數據轉換的七種方法
    前面小編和大家分享了有關學習javascript的方法,不知道各位小白和童鞋有沒有下去記哦,畢竟好記性不如爛筆頭嗎,一天記那麼一小點點,朽木也能雕成美麗的工藝品!好了,廢話就不多講了,咱們開始今天的javascript之旅吧!下面,就讓小編為大家分享一下javascript數據類型的轉換與它們之間的聯繫!一:什麼是javascript數據,常見的javascript數據主要有哪些?
  • java中boolean的用法
    boolean 數據類型 boolean 變量存儲為 8 位(1 個字節)的數值形式,但只能是 True 或是 False。   當作為一個構造函數(帶有運算符 new)調用時,Boolean() 將把它的參數轉換成一個布爾值,並且返回一個包含該值的 Boolean 對象。
  • MySQL BOOL/BOOLEAN 與 TINYINT 測試總結
    【導讀】MySQL資料庫產品提供了二種比較特殊的數據類型: SET(集合類型)、ENUM(枚舉類型)、BOOL/BOOLEAN(布爾類型),而多數開發人員,甚至DBA從業者對如何使用這三種數據類型的應用場
  • 七天學會javascript第一天javascript介紹
    javascript介紹javascript數據類型javascript運算符javascript對象javascript Date對象javascript String對象JavaScript常用於實現一些前端效果。前些年流行的flash已經慢慢的被淘汰,js盛行起來。javascript :客戶端編程。javascript是由客戶端去解釋運行的。
  • 如何在Python中將語音轉換為文本
    語音識別是計算機軟體識別口語中的單詞和短語並將其轉換為人類可讀文本的能力。在本教程中,你將知道如何使用SpeechRecognition 庫在Python中將語音轉換為文本 。因此,我們不需要從頭開始構建任何機器學習模型,該庫為我們提供了各種著名的公共語音識別API(例如Google Cloud Speech API,IBM Speech To Text等)的便捷包裝。
  • javascript之常用數據類型及判斷方法
    前端工作者學習之路對於剛開始入門的前端人員來說,javascript中的數據類型是既熟悉又籠統的概念,不論在php,還是c語言抑或java,他們的數據類型都各不相同,大家也千萬不用混淆,今天,我們來具體重新了解下javascript
  • 如何在Linux中將文件編碼轉換為UTF-8
    在這篇教程中,我們將解釋字符編碼的含義,然後給出一些使用命令行工具將使用某種字符編碼的文件轉化為另一種編碼的例子。最後,我們將一起看一看如何在 Linux 下將使用各種字符編碼的文件轉化為 UTF-8 編碼。
  • Javascript深拷貝
    javascript深拷貝是初學者甚至有經驗的開發者,都會經常遇到問題,並不能很好的理解javascript的深拷貝。 深拷貝(deepClone)? 實現 實現一個深拷貝函數,就不得不說javascript的數值類型。
  • JavaScript入門,為什麼要學習JavaScript?
    JavaScript是一種基於對象和事件驅動的、並具有安全性能的腳本語言JavaScript特點向HTML頁面中添加交互行為腳本語言,語法和Java類似解釋性語言,邊執行邊解釋JavaScript的組成:ECMAScriptDOMBOM1、如何引入js?
  • 在S7-1200 CPU中,如何實現模擬量數值與工程量數值之間的轉換?
    在S7-1200 CPU中,如何實現模擬量數值與工程量數值之間的轉換?本例程中的程序使用類似於STEP7 中提供的FC105/106.用戶可以使用它們將模擬量輸入/輸出的整數數值與工程量單位之間進行轉換。用戶需要將此例程安裝到程序庫中。步驟1:在西門子網站下載解壓縮"analog_convert.rar"( ( 307 KB ) )文件到一個文件夾。
  • JavaScript小知識:String類型
    let lang="java";lang=lange+"scriot";console.log(lang);//javascript我們首先創建變量lang用來保存字符串java,然後我們將lang保存的字符串改為由原先保存字符串java和新的字符串script組成。
  • 如何在Photoshop中將光柵圖像轉換為矢量化SVG
    這也很有意義,因為我真的很想在Blender中將路徑信息作為曲線使用,而不是潛在的柵格或字體信息。我在這裡提到這是因為a.)我不知道,並且b.)導入包含字體或光柵圖形的SVG不會將任何內容導入Blender-這讓我很困惑。因此,為了使Photoshop在我們的SVG文件中導出矢量數據而不是柵格數據,我們需要跳幾圈-但這是可能的。
  • 如何在Java中將DOCX轉換為PDF
    轉換肯定衝會員。手動將少量DOCX文件轉換為PDF格式可能很簡單,但工作中有很多呢?需要機械性重複呢?從程序角度看待這種轉換,必須解決許多問題。我們的主要問題是首先解析DOCX文件。這樣做的主要原因是DOCX非常複雜。此格式的ECMA規範包括5000頁,並定期添加新功能。另外,DOCX中的選擇深度成為一把雙刃劍。
  • 什麼是javascript?javascript需要學哪些內容?這篇文章告訴你!
    剩餘可以是任意字母,美元符號,下劃線和數字(3)不能使用javascript中的關鍵字(保留字)來命名變量(4)中文也可以聲明變量,不建議使用它。>一些特殊情況(除數為0,最大值變化)5.1.3布爾類型(boolean)true(真),false(假),都是小寫的。
  • 如何在Java中將DOCX轉換為PDF
    轉換肯定衝會員。由於這些優點和缺點,在兩種格式之間進行轉換仍然非常必要,而且在許多情況下通常很關鍵。手動將少量DOCX文件轉換為PDF格式可能很簡單,但工作中有很多呢?需要機械性重複呢?從程序角度看待這種轉換,必須解決許多問題。我們的主要問題是首先解析DOCX文件。
  • javascript進位的轉換
    這時候就需要我們用到二、八、十、十六進位之間的轉換了十進位和二進位之間的轉換十轉二:用到的方法是除二取餘,倒序排列例如將52轉為二進位結果為110100二轉十:從左往右,0開始排序依次為數值的數值*2的0次方,數值x*2的1次方…十進位和八/十六進位之間的轉換十進位先轉為二進位,再由二進位轉換二進位轉八或十六進位時要看對應的ASCII
  • JavaScript強制數據類型轉換
    自動 / 強制數據類型轉換自動數據類型轉換例如:效果如下,是number數字類型我們可以用tyeof 來輸出一下數據類型效果如下,不論乘除都是number類型如果我們用1 + true最終輸出的結果是強制數據類型轉換Boolean()強制轉換將各種類型的寫在boolean()括號中,輸出結果只有true或者falseNumber(); parseInt(); parseFloat();強制數據類型轉換注意:被除數在js中可以為0它的結果是Infinity代表無窮大的如果用-1/0; 那麼結果將是
  • 一文讀懂js中的隱式類型轉換
    前言今天來詳細了解一下javascript中的隱式類型轉換,通過在各種情況下發生的隱式類型的例子,來詳細的了解隱式類型轉換的過程。如何轉換-前置知識1.對象類型轉換當對象類型進行類型轉換時,會調用js內部一個方法toPrimitive, 此方法接收兩個參數,一個參數為需要轉換的對象,另一個方法接收一個期望類型,string或number。
  • 程式設計師的 JavaScript 代碼該如何讓計算機搞懂?
    出自程式設計師之手的 JavaScript 代碼,該如何變成計算機所能理解的機器語言呢?本文將帶你走進 JavaScript 引擎內部,一探究竟。作者 | Lydia Hallie譯者 | 彎月,責編 | 屠敏以下為譯文:JavaScript 很酷(這一點不用我說),但一臺機器究竟是怎樣理解我們編寫的代碼呢?
  • 使用JavaScript的一些小技巧
    這就是為什麼我們可以在每次迭代中將indexOf()方法返回的索引與當索索引進行比較,以確定當前項是否重複。console.log(val2)> Result: "false"console.log(typeof val2)> Result: "string"轉換為數值