求解释在js中1.0===1为true的原因

蓝婷儿
  • 29

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

回复
阅读 2.8k
3 个回答

简单解释就是 === 先比较类型,再比较

因为 js 中没有整数和浮点数,只有 number 类型。

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

因此 1.01 的类型是相同的。

然后比较,很显然两者也是相同的。


复杂的解释就是看规范:

  1. 如果 Type(x)Type(y) 的结果不一致,返回 false否则
  2. 如果 Type(x) 结果为 Undefined,返回 true
  3. 如果 Type(x) 结果为 Null,返回 true
  4. 如果 Type(x) 结果为 Number,则

    1. 如果 xNaN,返回 false
    2. 如果 yNaN,返回 false
    3. 如果 xy 为同一个数字,返回 true
    4. 如果 x+0y-0,返回 true
    5. 如果 x-0y+0,返回 true
    6. 返回 false
  5. 如果 Type(x) 结果为 String,如果 xy 为完全相同的字符序列(相同的长度和相同的字符对应相同的位置),返回 true,否则,返回 false
  6. 如果 Type(x) 结果为 Boolean,如果 xy 都为 truefalse,则返回 true,否则,返回 false
  7. 如果 xy 引用到同一个 Object 对象,返回 true,否则,返回 false

重要段落我加粗了。

JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此

因为js没有float,int,只有number

宣传栏