首頁 >web前端 >js教程 >javascript怎麼判斷變數是否相等

javascript怎麼判斷變數是否相等

青灯夜游
青灯夜游原創
2021-04-19 11:00:073509瀏覽

判斷方法:1、利用相等運算子「==」或「===」;2、利用陣列中的toString()方法;3、利用「Object.is()」方法;4 、先利用「JSON.stringify()」將物件或陣列轉為字串類型,然後使用「===」進行相等比較。

javascript怎麼判斷變數是否相等

本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

判斷變數相等的方式

判斷變數是否相等,大致上有以下一些方式

  • == 以及===;
  • 利用陣列中的toString方法;
  • ES6中的Object.is方法;
  • 利用JSON.stringify#,轉換為String類型來比較;

##=====

#==為轉換型別比較運算符,===為嚴格比較運算符,在資料型別相同的情況下,使用==一般不會造成問題。

let num = 5;
let num2 = 5;

num == num2;//true
num === num2;//true

但在資料型別不一致的情況下,

==會做一些隱性的型別轉換。

let num = 5;
let str = '5';

num == str;//true
num === str;//false

'' == false;//true
'' === false;//false

null == undefined;//true
null === undefined;//false

隱性轉換類型可以帶來一些便利性,但也有可能造成

不易發現的bug,所以還是更建議使用===#來進行比較,這也是TS之所以流行的原因之一。

此外,上面所列舉的都是基本資料型別的比較,而在用

===比較引用型別時,會存在一定的限制。

let a = {xx: 1};
let b = a;

a === b;//true

let c = {xx: 1};
let d = {xx: 1};

c === d;//false

在比較引用型別時,

===比較的是變數的參考是否相同,而非值,當引用不同時,就會回傳false

由此可見,

===並不是一枚無往不利的銀彈,在比較物件是否相等時,還需要藉助其他更可靠的方法。

【推薦學習:

javascript高階教學

#Array toString方法

前端給後端傳參時,後端有時會要求多個參數

,隔開,Array toString方法就比較有用了,這方法也能用來當作陣列比較。

let arr = [1,3,5,7,9];
let arr2 = [1,3,5,7,9];

arr.toString() === arr2.toString();//true "1,3,5,7,9"

不過也存在一定的局限性,不能用來比較二維以上的數組、不能包含

nullundefinedobjectfunction等,否則容易出錯,如下

[1,3,5,[2,4,6]].toString();//"1,3,5,2,4,6"
[1,null,undefined,'',2].toString();//"1,,,,2"
[{xx:2},window,1,2].toString();//"[object Object],[object Window],1,2"

#Object.is方法

##Object. is

是ES6新增的方法,與===非常類似,同樣用來比較兩個值是否相等。 <pre class="brush:js;toolbar:false;">Object.is(1,1);//true Object.is(&amp;#39;str&amp;#39;,&amp;#39;str&amp;#39;);//true Object.is({},{});//false</pre>不同的是在判斷

0

-0NaNNaN時的差異。 <pre class="brush:js;toolbar:false;">+0 === -0 //true NaN === NaN //false Object.is(+0, -0) //false Object.is(NaN, NaN) //true</pre>在處理相容性問題時,polyfill可以這樣寫。

if (!Object.is) {
  Object.is = function(x, y) {
    if (x === y) {
      // 针对+0 不等于 -0的情况
      return x !== 0 || 1 / x === 1 / y;
    } else {
     // 针对NaN的情况
      return x !== x && y !== y;
    }
  };
}

JSON.stringify

#JSON.stringify

方法用來把物件或陣列轉換為一個JSON字串,所得的字串便可以用作物件的比較。 <pre class="brush:js;toolbar:false;">let obj = {name: &amp;#39;lin&amp;#39;, age: 24}; let obj2 = {name: &amp;#39;lin&amp;#39;, age: 24}; obj === obj2;//false JSON.stringify(obj) === JSON.stringify(obj2);//true</pre>

JSON.stringify

彌補了===無法準確比較物件的限制,不過它也有一定的局限性,在遇到undefinedfunction以及symbol值時會忽略。 另外,值得一提的是利用

JSON.parse

JSON.stringify可實現物件深拷貝,局限性同上。

何時使用它們不一樣的場景可能有不一樣的需求,如果只比較基本資料類型,那麼

===

就足夠了,如果想“一勞永逸”,那麼付出一定的成本使用自訂方法無疑是有必要的。 在日常反覆的開發中,還是要多多探索吧。

更多程式相關知識,請造訪:

程式設計影片

! !

以上是javascript怎麼判斷變數是否相等的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn