【Day 22】JavaScript 的 相等比较

JavaScript 提供三种不同的值比较运算操作:

  • 严格相等 (或称 "三等於"、"全等") 使用 ===
  • 一般相等 ("双等於") 使用 ==
  • 还有 Object.is //在ES6(ECMAScript 2015)新加入

严格相等(===): 不会自动转型,比较值及型别皆须相等则回传 true,否则有一任何不相等则回传 false,但是有一种情况例外,当两个不同的值都是NaN,则比较两个不同的 NaN 时会回传 false。

严格比较适合在绝大多数情况下使用。对於所有非数字的值,严格比较就如字面:一个值只相等於自己。而数字则使用稍微不同的方式:第一种情况是浮点数 0 同时为正和负,在解决某些数学问题时,+0 和 -0 是不同的,但在大部分情况下我们不需要考虑这种情境,因此严格比较将他们视为相同的。第二种情况是非数字,NaN,用来表示某些定义不明确的数学问题的解, 例如:负无穷加正无穷,严格比较认为 NaN 不等於任何值,包含他本身。((x !== x)只有在 x 是 NaN 时会是 true。)

x = 5
console.log( x === 5);
console.log( x === "5");

y= NaN
console.log( y === NaN);

https://ithelp.ithome.com.tw/upload/images/20210922/20140399qKViEKnDW1.jpg

一般相等(===): 会自动转型,一般相等会先将比较值转换成同型别後比较。转换後(可能一个或两个都被转换),接着进行的几乎和严格比较(===)一样。

字串比较是依据Unicode编码的顺序

x = 5
console.log( x == 5);
console.log( x == "5");

console.log("a">"b");
console.log("a"<"b");

y= NaN
console.log( y === NaN);

https://ithelp.ithome.com.tw/upload/images/20210922/20140399AvKC2MXjJJ.jpg

Object.is(===): 不会自动转型,会和严格相等做同样的事,但会将 NaN、-0 和 +0 独立处理,因此这三个不会相等,而 Object.is(NaN, NaN) 则会回传 true。-0 和 +0则会回传 false。

console.log(Object.is( NaN, NaN));
console.log(Object.is( 0, -0));
console.log(Object.is( 3, '3'));

https://ithelp.ithome.com.tw/upload/images/20210922/2014039903sfiuV52z.jpg


<<:  Day 09 - 云端监控帮手CloudWatch与Cloud Trail

>>:  [Day18] POPCAT in WASM (Part 2)

用React刻自己的投资Dashboard Day6 - 建立图表区元件,串接API取得数据

tags: 2021铁人赛 React 上一篇使用静态的资料,将多张数据资料表画成线图呈现在网页上,...

Day16:16 - 购物车服务(4) - 前端 - 购物车数量增减、删除

হ্যালো,我是Charlie! 在Day15当中我们完成了後端的购物车数量增减跟删除,而今天我们...

Day 26 - CDK 建置 Amazon Elastic Kubernetes Service(EKS)- Service

昨天介绍完了 Cluster 今天来介绍如何使用 CDK 建立 EKS Service 往常我们如果...

【在厨房想30天的演算法】Day 22 演算法 : 最短路径 Shortest Path Bellman–Ford 演算法

Aloha!我是少女人妻 Uerica!我家狗狗每天六点都会叫我起床,但除非自己很早睡,不然六点起床...

[Day 2] php变数型态与运算

php中的资料型态(Data Type) String Integer Float Boolean ...