日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

== vs === in Javascript

發布時間:2023/12/10 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 == vs === in Javascript 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文來自網易云社區


作者:魏文慶

如果你只想知道==與===的區別,請直接看總結,當然我更希望您能耐心看完全文。
Javascript中用于相等比較的操作符有兩個==和===。==我們通常稱為“等于”,而===我們通常稱為“嚴格等于”。本文將對==和===做詳細說明。===相對簡單,讓我們從===開始。

===

===首先要求比較雙方類型相同, 還要求比較雙方值相等。 如果比較的雙方是都是對象類型,只有指向同一個對象,才能嚴格相等。關于javascript的數據類型,請參見Javascirpt基本數據類型。
  本節示例如下:

????//?類型相同,值相同,才嚴格相等1?===?1;????"jerry"?===?"jerry";????true?===?true;????null?===?null;????undefined?===?undefined;????//?類型相同且為對象類型,必須是指向同一個的對象才嚴格相等{name:"jerry"}?!==?{name:?"jerry"}??//?兩個不同的{name:"jerry"}對象var?a?=?{name:"jerry"};????var?b?=?a;a?===?b;????//?指向同一個對象//?類型不同,不嚴格相等null?!==?undefined;????false?!==?0;????1?!==?"1";

==

==在進行比較時,如果比較的雙方數據類型不同,通常會先轉換成相同的類型再進行比較。如果比較的雙方類型相同,這時與===相同:如果比較的雙方是對象類型,只有指向同一個對象,才能相等;如果是其他類型,比較值是否相等。
比較的雙方類型相同時,可以參考===,比較雙方類型相同的例子,也可作為本節的例子。下面我們重點討論比較雙方類型不同的情況。
上文中提到比較雙方數據類型不同,通常會先轉換成相同的類型,哪些是異常呢?null和undefined。


null和undefined在比較的時候不會轉換成其他類型。null只和undefined相等。

本節示例如下:

????//?null和undefined相等null?==?undefined;????//?null/undefined比較時不會做隱式類型轉換0?!=?null;????"undefined"?!=?undefined;????null?!=?false;

我們對上例中的0!=null進行具體分析,如果比較之前進行隱式類型轉換的話,null轉換成Number型的結果為0, 值是相等的,但因為null/undefined在比較之前不會隱式類型轉換,所以0!=null。"undefined" != undefined、 null != false 原因類似。

關于隱式類型轉換到指定類型的結果,其實等價于調用指定類型的構造函數, 比如null隱式類型轉換成Number型的結果等于Number(null), undefined轉換成String型的結果等于String("undefined"),詳情請參見javascript類型轉換。

比較的雙方數據類型不同時,進行隱式類型轉換時優先轉換成Number型。

本節示例如下:

????//?隱式類型轉換優先轉換成Number型"99"?==?99;?//?"99"轉換成Number型為99""?==?0;????//?""轉換成Number型為0true?==?1;??//?true轉換成Number型為1false?==?"0";????'?\n\n\n'?==?false;

上例中false=="0"比較難以理解,無論是"0"轉換成Boolean型(結果為true),還是把false轉換成String型(結果為"false"),值都是不相等的,為什么false=="0"呢?我們只要記住優先轉換成Number型原則, false轉換成Number型,等于 Number(false),等于0, "0"轉換成Number型,等于Number("0"), 等于0, 值相等。' \n\n\n' == false類似,Number(' \n\n\n')等于0, Number(false)等于0, 值相等。

比較的雙方數據類型不同且有一方是Object類型, 先把Object類型轉換成原始類型。我們知道基本只有String/Number/Boolean對象能轉換成有意思的原始類型。我們在程序中不推薦使用String/Number/Boolean對象(直接使用原始值), 這部分內容就不展開了。

總結

==和===的異同點:

  • 比較雙方都是對象時,只有指向同一個對象才會相等(包含==/===)。

  • ===要求比較雙方類型相同并且值相等。

  • ==在比較雙方類型不同的時候通常會進行隱式類型轉換。

  • 易于記憶的==比較的原則:

  • null==undefined, null/undefined不進行隱式類型轉換。

  • 進行隱式類型或轉換時,優先轉換成Number型。



  • 網易云大禮包:https://www.163yun.com/gift

    本文來自網易云社區,經作者魏文慶授權發布。


    相關文章:
    【推薦】?3分鐘掌握一個有數小技能:回頭客分析
    【推薦】?兩分鐘了解Docker的優勢

    轉載于:https://www.cnblogs.com/163yun/p/9565415.html

    總結

    以上是生活随笔為你收集整理的== vs === in Javascript的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。