亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

javascript判斷變量是否相等的方法

發布時間:2021-04-19 13:48:28 來源:億速云 閱讀:206 作者:小新 欄目:web開發

這篇文章主要介紹javascript判斷變量是否相等的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

判斷方法:1、利用相等運算符“==”或者“===”;2、利用數組中的toString()方法;3、利用“Object.is()”方法;4、先利用“JSON.stringify()”將對象或數組轉為字符串類型,然后使用“===”進行相等比較。

判斷變量相等的方式

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

  • == 以及 ===

  • 利用數組中的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

由此可見,===并不是一枚無往不利的銀彈,在比較對象是否相等時,還需要借助其他更可靠的方法。

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中新增的方法,與===非常類似,同樣用作比較兩個值是否相等。

Object.is(1,1);//true
Object.is('str','str');//true
Object.is({},{});//false

不同的是在判斷+0-0NaNNaN時的區別。

+0 === -0 //true
NaN === NaN //false

Object.is(+0, -0) //false
Object.is(NaN, NaN) //true

在處理兼容性問題時,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字符串,得出的字符串便可以用作對象的比較。

let obj = {name: 'lin', age: 24};
let obj2 = {name: 'lin', age: 24};

obj === obj2;//false
JSON.stringify(obj) === JSON.stringify(obj2);//true

JSON.stringify彌補了===無法準確比較對象的局限,不過它也有一定的局限性,在遇到undefinedfunction以及symbol值時會忽略。

另外,值得一提的是利用JSON.parseJSON.stringify可實現對象深拷貝,局限性同上。

何時使用它們

不一樣的場景可能有不一樣的需求,如果只比較基本數據類型,那么===就足夠了,如果想“一勞永逸”,那么付出一定的成本使用自定義方法無疑是有必要的。

在日常反復的開發中,還是要多多探索吧。

以上是“javascript判斷變量是否相等的方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

屯留县| 安溪县| 辽源市| 曲阳县| 芜湖县| 株洲县| 永福县| 乐东| 环江| 乐至县| 安多县| 年辖:市辖区| 太和县| 城步| 桃源县| 北安市| 中超| 越西县| 莱阳市| 鹤庆县| 大英县| 富裕县| 阳朔县| 渝中区| 清徐县| 镇平县| 象州县| 丁青县| 阳原县| 包头市| 阳信县| 清丰县| 六盘水市| 谢通门县| 安西县| 九寨沟县| 阳新县| 兴和县| 宜川县| 罗定市| 鄯善县|