从 ES6 到 ES11,JavaScript 中对 "===" 严格相等比较符的全面认识

阅读时长 5 分钟读完

在 JavaScript 中,比较操作符用于比较两个变量或值,并返回 true 或 false。其中,"===" 严格相等比较符比较两个操作数的类型和值是否相等。随着 ES6、ES7、ES8、ES9、ES10、ES11 的不断推出,JavaScript 对于 "===" 严格相等比较符的使用也变得越来越丰富。

ES6 对 "===" 严格相等比较符的改进

在 ES6 中,添加了 "Array.prototype.includes()" 方法,该方法返回一个布尔值,表示某个数组是否包含给定的值。与以前的 "Array.prototype.indexOf()" 方法相比,该方法更加简单和直观,并且可以处理 NaN 值。如下面示例所示:

需要注意的是, "includes()" 方法使用 "===" 严格相等比较符进行比较。

ES7 对 "===" 严格相等比较符的改进

在 ES7 中,引入了 "Array.prototype.includes()" 方法的一个姊妹方法:"String.prototype.includes()"。该方法用于确定一个字符串是否包含在另一个字符串中,并返回一个布尔值。与 "indexOf()" 方法不同的是,"includes()" 方法使用 "===" 严格相等比较符进行比较。例如:

ES8 对 "===" 严格相等比较符的改进

在 ES8 中,引入了 "Object.values()" 方法,该方法返回对象自身可枚举属性的值所组成的数组。与之相似的方法还有 "Object.keys()" 和 "Object.entries()"。例如:

需要注意的是, "Object.values()" 方法返回的是对象自身可枚举属性的值组成的数组,而不是属性名。

ES9 对 "===" 严格相等比较符的改进

在 ES9 中,添加了 "spread syntax"(扩展语法),该语法可以轻松地将数组或对象扩展成另一个数组或对象。

需要注意的是,使用扩展语法进行比较时,也是使用 "===" 严格相等比较符进行比较。

ES10 对 "===" 严格相等比较符的改进

在 ES10 中,添加了 "Array.prototype.flat()" 和 "Array.prototype.flatMap()" 两个方法。其中, "flat()" 方法用于将多维数组转换为一维数组, "flatMap()" 方法则是将每个元素执行一个 map 方法,然后通过 "flat()" 方法将嵌套的数组平坦化,并返回一个新数组。

需要注意的是,即使使用 "===" 严格相等比较符,由于数组中包含引用类型的元素,因此在使用 "flat()" 和 "flatMap()" 方法时,也需要注意比较的类型。

ES11 对 "===" 严格相等比较符的改进

在 ES11 中,引入了 "nullish coalescing operator"(空值合并运算符)和 "optional chaining operator"(可选链运算符)两种运算符。

"nullish coalescing operator" 运算符(??)用于将一个空值(null 或 undefined)转换为一个默认值。例如:

在此示例中,因为 a 变量是 null,因此将其转换为 b 变量的值 9。

"optional chaining operator" 运算符(?.)用于减少代码中的嵌套,它允许我们在访问一个对象的属性和方法时,不用进行冗长的空值检查。例如:

-- -------------------- ---- -------
----- ------ - -
  ----- -------
  ---- ---
  -------- -
    ----- ---- -----
  -
--

----- ---- - ---------------------- -- --- ----

需要注意的是,如果属性不存在,运算符会返回 undefined 而不是抛出错误。

总结

在 JavaScript 中,"===" 严格相等比较符可以帮助我们比较变量或值的类型和值。随着 ES6 到 ES11 的不断推出,JavaScript 对于 "===" 严格相等比较符的使用也变得越来越丰富。应该在实际开发中充分利用这些新的特性,提高代码的效率和健壮性。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c4ec8283d39b4881841fe2

纠错
反馈