鍍金池/ 問答/HTML/ 求解釋在js中1.0===1為true的原因

求解釋在js中1.0===1為true的原因

在js中為什么1.0===1為true

回答
編輯回答
乖乖噠

JavaScript 內(nèi)部,所有數(shù)字都是以64位浮點數(shù)形式儲存,即使整數(shù)也是如此

2017年10月29日 17:17
編輯回答
不二心

因為js沒有float,int,只有number

2017年12月2日 17:03
編輯回答
吢丕

簡單解釋就是 === 先比較類型,再比較

因為 js 中沒有整數(shù)和浮點數(shù),只有 number 類型。

typeof 1.0;  // "number"
typeof 1;    // "number"

因此 1.01 的類型是相同的。

然后比較,很顯然兩者也是相同的。


復(fù)雜的解釋就是看規(guī)范:

  1. 如果 Type(x)Type(y) 的結(jié)果不一致,返回 false,否則
  2. 如果 Type(x) 結(jié)果為 Undefined,返回 true
  3. 如果 Type(x) 結(jié)果為 Null,返回 true
  4. 如果 Type(x) 結(jié)果為 Number,則

    1. 如果 xNaN,返回 false
    2. 如果 yNaN,返回 false
    3. 如果 xy 為同一個數(shù)字,返回 true
    4. 如果 x+0,y-0,返回 true
    5. 如果 x-0,y+0,返回 true
    6. 返回 false
  5. 如果 Type(x) 結(jié)果為 String,如果 xy 為完全相同的字符序列(相同的長度和相同的字符對應(yīng)相同的位置),返回 true,否則,返回 false
  6. 如果 Type(x) 結(jié)果為 Boolean,如果 xy 都為 truefalse,則返回 true,否則,返回 false
  7. 如果 xy 引用到同一個 Object 對象,返回 true,否則,返回 false

重要段落我加粗了。

2017年10月6日 11:52