搜尋

首頁  >  問答  >  主體

JavaScript中怎麼理解=、==、===

JavaScript中怎麼理解=、==和===,如何釐清這三者之間的關係?

迷茫迷茫2763 天前1018

全部回覆(6)我來回復

  • 大家讲道理

    大家讲道理2017-06-30 10:00:46

    = : 賦值操作

    ==: 用來判斷兩個值是否相等,但是這裡的判斷是經過隱式轉換的結果。例如

    1 == '1';  // true
    1 == true; // true
    0 == false; // true

    ===: 也是用來判斷兩個值是否相等,但是不會有隱式轉換的過程,而是直接判斷,因此也叫做絕對相等/全等。

    1 === '1';  // false
    1 === true; // false
    0 === false; // false

    1、對於string,number等基礎型,==和===是有區別的

    • 不同型態間比較,==之比較「轉換成相同型別後的值」看「值」是否相等,===如果型別不同,結果就是不等

    • 同型態比較,直接進行「值」比較,兩者結果一樣

    2、對於Array,Object等高階類型,==和===是沒有區別的

    進行「指標位址」比較

    3、基礎類型與進階型,==和===是有區別的

    • 對於==,將高階轉換為基礎類型,進行「值」比較

    • 因為類型不同,===結果為false

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-06-30 10:00:46

    '=': 表示賦值,

    var a = 1,
        b = 2;
    return a = b;    //返回2,为a赋值b,即a为2

    '==': 判斷值是否相同,不判斷型別

    var a = 1,
        b = '1';
    return a == b;    //返回true

    '===': 精確判斷,不僅判斷值還判斷型別

    var a = 1,
        b = '1';
    return a === b;    //返回false

    1、對於string,number等基礎型,==和===是有區別的

    • 不同型態間比較,==之比較「轉換成相同型別後的值」看「值」是否相等,===如果型別不同,結果就是不等

    • 同型態比較,直接進行「值」比較,兩者結果一樣

    2、對於Array,Object等高階類型,==和===是沒有區別的進行「指標位址」比較

    3、基礎類型與進階型,==和===是有區別的

    • 對於==,將高階轉換為基礎類型,進行「值」比較

    • 因為類型不同,===結果為false

    回覆
    0
  • 学习ing

    学习ing2017-06-30 10:00:46

    =是賦值運算子

    let a=b // 将值b赋给变量a

    == 和===是比較運算子

    a == b 比较a与b值是否相等
    a === b 比较a与b是否全等,值和类型都要相同

    回覆
    0
  • 欧阳克

    欧阳克2017-06-30 10:00:46

    ==會進行隱式資料型別轉換,===不會,就是比較兩側是否真的相等
    http://www.softwhy.com/articl...

    回覆
    0
  • 仅有的幸福

    仅有的幸福2017-06-30 10:00:46

    1. 「=」用來賦值,直接賦值。

    2. "=="運算符,會先轉換,在運算。

    3. "==="絕對相等,兩邊的值和型別都相等才相等。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-06-30 10:00:46

    盡量多用=== ==很容易出問題

    回覆
    0
  • 取消回覆