成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么在JavaScript中 [] == ![] 返回 TRUE?

開發 前端
把所有的責任都推給危險的 == 運算符。這只是我們總是告訴JavaScript新手永遠不要使用它(真的永遠不要)的又一個例子。尤其是如果他們之前一直在使用像C#這樣固執且嚴格的語言編程。

圖片圖片

這毫無道理。

一個數組怎么可能不是一個數組呢?

圖片圖片

[] 是真值,而 ![] 應該是 false。

那么 [] 怎么可能等于 false 呢?

而且這種情況似乎并不發生在其他類型上,比如字符串和數字:

圖片圖片

JavaScript的數組是不是壞了?

這里發生了什么

把所有的責任都推給危險的 == 運算符。

這只是我們總是告訴JavaScript新手永遠不要使用它(真的永遠不要)的又一個例子。

尤其是如果他們之前一直在使用像C#這樣固執且嚴格的語言編程。

乍一看,== 似乎沒有任何問題:

圖片圖片

圖片圖片

但現在看看這里發生了什么:

圖片圖片

但看看在JavaScript中發生了什么:

圖片圖片

JavaScript自動將字符串轉換成了數字!

這是人們對JavaScript的諸多不滿之一,這也是TypeScript出現的原因。

圖片圖片

那么你認為在 [] == ![] 的背后,真正發生了什么?

首先,在JavaScript中空數組是真值,所以 ! 作用于它使其變成 false

圖片圖片

我們突然發現自己在比較一個 數組 和一個 布爾值。顯然不會有好結果。

正如我們現在所知,JS并不在意,所以它就繼續進行 — 這次將 布爾值 轉換為等價的數字

圖片圖片

接下來,由于一些你永遠不需要知道的垃圾規則,[] 變成了...一個空字符串?

圖片圖片

最后它將 "" 轉換成...一個數字:

圖片圖片

那么,避免這種荒謬情況的解決方案是什么?

始終使用嚴格相等運算符 ===。

圖片圖片

沒有任何可以想象的場景是 == 可以使用而 === 不能使用的

現在使用 ===,VS Code編輯器突然活躍起來,阻止我們做類似這樣的事情:

圖片圖片

但之前它是沉睡的:

圖片圖片

但 [] == [] 呢?

好的,這說得通,但那么什么可以解釋這個:

圖片圖片

肯定不能怪 == 了。它們有相同的類型,不是嗎?

是的,它們確實有。

只是JavaScript通過引用比較數組。而不是通過值。

它們可能有完全相同的值,但只要它們不指向內存中的同一個對象,在 == 和 === 看來它們就永遠不會相等。

圖片圖片

對于對象來說一般也是這樣:

圖片圖片

當然,對于我們的核心原始值 — 字符串、數字和布爾值 — 情況并非如此

圖片圖片

那么,當你想按元素值比較數組時該怎么辦?

如果是已排序的,你可以使用 JSON.stringify():

圖片圖片

否則,你可以使用更通用的 length 和 every() 組合:

圖片圖片

最后的思考

== 只是JavaScript松散性導致它做出在現實世界中毫無意義的事情的一個例子。

道德教訓:始終使用嚴格相等,使用TypeScript,并優先使用現代特性。

責任編輯:武曉燕 來源: 大遷世界
相關推薦

2024-08-23 09:14:18

2024-08-23 08:47:51

2023-03-28 08:53:18

操作符數字字符串

2023-09-19 08:03:01

JavaScriptevery()

2022-12-22 14:32:37

JavaScript編程語言

2023-08-13 16:17:31

2016-12-22 18:38:49

JavaAndroid

2015-11-23 10:09:30

Java

2019-08-30 14:58:47

JavaScript程序員編程語言

2016-04-06 11:29:58

JavaScriptDOM操作

2020-05-06 22:20:48

Kubernetes邊緣計算

2020-05-26 15:53:01

StraceDocker容器

2021-04-16 17:37:28

數據智能照明物聯網

2020-08-11 11:51:47

標準物聯網IOT

2022-09-14 09:37:17

JavaScript默認導出

2023-11-08 13:32:00

JavaScript浮點數計算

2021-05-30 09:25:48

HttpETag 網絡協議

2023-09-20 00:06:30

Python代碼函數

2022-07-15 13:43:40

網絡安全黑客

2019-10-23 15:53:16

JavaScript可選鏈對象
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: xxxxx黄色片 欧美一区免费 | 日韩二区 | 久久三区 | 欧美一级二级三级视频 | 中文字幕乱码亚洲精品一区 | 狠狠操婷婷| 毛片一区| 久久99精品久久久久久琪琪 | 精品免费av | 91欧美| 日韩在线播放一区 | 午夜精品久久久久久久久久久久久 | 99视频在线免费观看 | 国产精品入口麻豆www | 亚洲精品欧美精品 | 真人一级毛片 | 久久宗合色 | 中文字幕国产精品 | 超碰操 | 99久久影院| 精品亚洲一区二区三区四区五区高 | 久久精品亚洲 | 91精品国产综合久久精品 | 久久一区二区精品 | 日韩中文字幕网 | 激情网站在线观看 | 精品在线免费观看视频 | 国产精品a免费一区久久电影 | 国产精品一区二区在线免费观看 | 亚洲国产精品成人综合久久久 | 日韩精品一 | 日韩精品一区二区三区免费视频 | 国产剧情一区 | 91综合网 | 欧美视频在线播放 | 国产精品成人一区二区三区夜夜夜 | 久久的色 | www.日本在线观看 | 国产成人精品午夜视频免费 | 国产精品视频久久久久 | 成人一区二区三区在线 |