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

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

阅读 4.2k
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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题