数据类型

BigInt

内存管理

栈内存

堆内存

类型判断

判断数组

null 和 undefined 区别

Object.is===\== 区别

Number.isNaN 与 isNaN 区别

NaN == NaN 为什么是 false

== 强转规则

object 转原始类型(ToPrimitive 方法):

其他值到布尔类型的值的转换规则

以下这些是 false,除此以外都是 true:

精度丢失

这个标准,会让大部分的十进制小数都不能用二进制浮点数来精确表示(比如转成二进制就会变成无限小数)。所以一般情况下,你输入的十进制小数仅由实际存储在计算机中的近似的二进制浮点数表示。

然而,许多语言在处理的时候,在一定误差范围内(通常极小)会将结果修正为正确的目标数字,而不是像 JS 一样将存在误差的真实结果转换成最接近的小数输出

解决:

使用 Number.EPSILON(误差范围)

Number.EPSILON 表示 1 与 Number 可表示的大于 1 的最小的浮点数之间的差值

function isEqual(a, b) {
  return Math.abs(a - b) < Number.EPSILON;
}

console.log(isEqual(0.1 + 0.2, 0.3)); // true

0.1 + 0.2 为什么不等于 0.3

0.2 + 0.3 为什么没有这个问题?: