搜尋
首頁web前端js教程JS相等比較運算子的符合規則及if()條件的判斷

JS相等比較運算子的符合規則及if()條件的判斷

Oct 26, 2022 pm 07:10 PM
javascript比較運算符

這篇文章跟大家介紹一下javascript比較運算子(「JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷」和「JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷」)的配對規則,以及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷結果,希望對大家有幫助!

JS相等比較運算子的符合規則及if()條件的判斷

1. 結論先行

#我們都知道,在JS中,要盡量使用全等運算子(「JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷」),因為全等運算子在比較時都不會進行類型的轉化,相對而言速度也會更快。那麼什麼時候使用相等運算子(「JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷」)呢?以下兩種情況供參考:

  • 用於判斷物件的屬性是否存在

  • ##
    let obj = {};
    if( obj.a JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 null ) {
        //这里相对于:obj.a JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 null || obj.a JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 undefined 的简写形式,jquery源码的推荐写法
    }
  • ##用來判斷函數的參數

    是否存在

function fn( a, b ) {
    if( a JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 null ) {
        //这里也相当于 a JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 null || a JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 undefined 的简写
    }
}
#總結: 一般情況下我們盡量使用“ JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷」來精確判斷,在判斷物件屬性和函數參數是否存在時可以使用「JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷

」。

2. 結果判斷參考表

接下來讓我們總結各種資料型別使用這兩種運算子所得到的結果,其中:綠色表示結果為true,白色表示結果為false

2.1 全等運算子(「<span style="font-size: 18px;"></span>#JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 #」)的操作結果

JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷

#2.2 相等運算子(「<span style="font-size: 18px;"></span>JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷」)操作結果

JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷

#2.3 JS相等比較運算子的符合規則及if()條件的判斷條件判斷結果

JS相等比較運算子的符合規則及if()條件的判斷

3. 具體判斷的邏輯說明

(轉載自:js比較運算子隱式型別轉換)

3.1 全等運算子(“<span style="font-size: 18px;"></span>JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷##”)

說明: 嚴格符合,不會型別轉換,必須要資料型別和值完全一致。

先判断类型,如果类型不是同一类型的话直接为false;

1 对于基本数据类型(值类型): Number,String,Boolean,Null和Undefined:两边的值要一致,才相等
      console.log(null JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 null)   // true
      console.log(undefined JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 undefined)  // true
   注意: NaN: 不会等于任何数,包括它自己
   console.log(NaN JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 NaN)  // false 

2 对于复杂数据类型(引用类型): Object,Array,Function等:两边的引用地址如果一致的话,是相等的
     arr1 = [1,2,3];
     arr2 = arr1;
     console.log(arr1 JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 arr2)   // true

3.2 相等運算子(“<span style="font-size: 18px;">JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷</span>##”)

非嚴格符合: 會型別轉換,但是有前提條件一共有五種情況 (接下來的程式碼以x JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 y 為範例)

  • x和y都是null或undefined:

    規則: 沒有隱含型別轉換,無條件回傳true

  • console.log ( null JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 undefined );//true
    console.log ( null JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 null );//true
    console.log ( undefined JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 undefined );//true
  • x或y是NaN : NaN與任何數字都不等

    規則:沒有隱式類型轉換,無條件返回false

  • console.log ( NaN JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 NaN );//false
  • x和y都是string,boolean,number

    規則:有隱式型別轉換,會將不是number型別的資料轉成number

  • console.log ( 1 JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 true );//true    (1) 1 JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 Number(true)
    console.log ( 1 JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 "true" );//false   (1) 1 JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 Number(&#39;true&#39;)
    console.log ( 1 JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 ! "true" );//false  (1) 1 JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 !Boolean(&#39;true&#39;)  (2) 1 JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 !true  (3) 1 JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 false  (4)1 JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 Number(false)
    console.log ( 0 JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 ! "true" );//true
    console.log(true JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 &#39;true&#39;) // false
    ##x或y是複雜資料型別: 會先取得複雜資料型別的原始值之後再左比較
  • 複雜資料型別的原始值: 先呼叫valueOf方法,然後再呼叫toString方法

    valueOf:一般預設回傳自身
    陣列的toString :預設會呼叫join方法拼接每個元素並且傳回拼接後的字串

    console.log ( [].toString () );//空字符串
    console.log ( {}.toString () );//[object Object]
    注意:  空数组的toString()方法会得到空字符串,
          而空对象的toString()方法会得到字符串[object Object] (注意第一个小写o,第二个大写O哟)
    
    console.log ( [ 1, 2, 3 ].valueOf().toString());//‘1,2,3’
    console.log ( [ 1, 2, 3 ] JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 "1,2,3" );//true  (1)[1,2,3].toString() JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 &#39;1,2,3&#39;  (2)&#39;1,2,3&#39; JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 &#39;1,2,3&#39;
    console.log({} JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 &#39;[object Object]&#39;);//true
    x和y都是複雜資料型別:
  • 規則只比較地址,如果地址一致則回傳true,否則回傳false


    var arr1 = [10,20,30];
    var arr2 = [10,20,30];
    var arr3 = arr1;//将arr1的地址拷贝给arr3
           
    console.log ( arr1 JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 arr2 );//虽然arr1与arr2中的数据是一样,但是它们两个不同的地址
    console.log ( arr3 JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 arr1 );//true  两者地址是一样
           
    console.log ( [] JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 [] );//false
    console.log ( {} JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 {} );//false

3.3 經典面試題

注意:八种情况转boolean得到false: 0 -0 NaN undefined null &#39;&#39; false document.all()

console.log([] JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 0); //true 
  // 分析:(1) [].valueOf().toString() JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 0  (2) Number(&#39;&#39;) JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 0  (3) false JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 0  (4) 0 JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 0
console.log(![] JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 0); //true
  // 分析: 逻辑非优先级高于关系运算符 ![] = false (空数组转布尔值得到true)
        
console.log([] JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 []); //false
// [] 与右边逻辑非表达式结果比较
//(1) [] JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 !Boolean([])   (2) [] JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 !true  (3)[] JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 false  (4) [].toString() JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 false  (5)&#39;&#39; JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 false   (6)Number(&#39;0&#39;) JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 Number(false)
console.log([] JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 ![]); //true

onsole.log({} JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 {}); //false
// {} 与右边逻辑非表达式结果比较
//(1){} JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 !{} (2){} JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 !true  (3){} JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 false  (4){}.toString() JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 false  (5)&#39;[object Object]&#39; JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 false  (6)Number(&#39;[object Object]&#39;) JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 false
console.log({} JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 !{}); //false

3.4 變態面試題

 var  a = ???
  if(a JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 1 && a JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 2 && a JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 3 ){
      console.log(1)
  }

//如何完善a,使其正确打印1

//答案
var a = {
  i : 0,    //声明一个属性i
    valueOf:function ( ) {
     return ++a.i;    //每调用一次,让对象a的i属性自增一次并且返回
    }
 }
 if (a JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 1 && a JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 2 && a JS相等比較運算子的符合規則及JS相等比較運算子的符合規則及if()條件的判斷條件的判斷 3){  //每一次运算时都会调用一次a的valueOf()方法
  console.log ( "1" );
 }
【相關推薦:

javascript影片教學

程式設計影片

以上是JS相等比較運算子的符合規則及if()條件的判斷的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:csdn。如有侵權,請聯絡admin@php.cn刪除
Python vs. JavaScript:學習曲線和易用性Python vs. JavaScript:學習曲線和易用性Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python vs. JavaScript:社區,圖書館和資源Python vs. JavaScript:社區,圖書館和資源Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C到JavaScript:所有工作方式從C/C到JavaScript:所有工作方式Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript引擎:比較實施JavaScript引擎:比較實施Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

超越瀏覽器:現實世界中的JavaScript超越瀏覽器:現實世界中的JavaScriptApr 12, 2025 am 12:06 AM

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

使用Next.js(後端集成)構建多租戶SaaS應用程序使用Next.js(後端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

如何使用Next.js(前端集成)構建多租戶SaaS應用程序如何使用Next.js(前端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:22 AM

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript:探索網絡語言的多功能性JavaScript:探索網絡語言的多功能性Apr 11, 2025 am 12:01 AM

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器