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

如何避免JavaScript類型轉換

開發 前端
你是否經歷過JavaScript中的某些值比較沒有得到預期結果的情況?本文主要說明這些值比較的工作原理以及影響它們的因素。在深入解釋之前,大家要熟悉一個概念:類型轉換。

[[394904]]

文本已經過原作者 Viduni Wickramarachchi 授權翻譯。

你是否經歷過JavaScript中的某些值比較沒有得到預期結果的情況?

看下面的情況:

即使[]==0結果為真,if[]條件也沒有根據結果執行。有沒有想過為什么會這樣?

本文主要說明這些值比較的工作原理以及影響它們的因素。在深入解釋之前,大家要熟悉一個概念:類型轉換。

什么是 JavaScript 類型轉換?

這也稱為類型強制。對于不熟悉此概念的人來說,它只是將值從一種數據類型自動轉換為另一種數據類型。

看個例子,大家會更清楚明白。

在此示例中,定義的兩個變量具有兩種類型;字符串和數字。但是,當我們使用 ==(非嚴格比較)進行比較時,結果為true。原因是當我們使用==比較這兩個時,JavaScript 會自動嘗試將String類型轉換為Number類型以產生結果。這是一種強制轉換。

JavaScript中有多種強制類型。

  • Number conversions
  • String conversions
  • Boolean conversions
  • 對象的類型轉換

類型強制轉換都是好的嗎?

在上述情況下,類型轉換沒有害處。但是,在許多情況下,類型強制會導致問題。

我們看下面例子。

在這里,JavaScript已將Number類型轉換為String。這與相等比較中發生的情況相反。我們預期的結果是450。但是,我們得到了String輸出。

現在,我們對類型轉換以及為什么要避免使用類型轉換有了清晰的了解,讓我們看看如何避免類型轉換。這是本文最重要的部分。因此,請坐下來,喝咖啡并集中精力??

如何避免 JavaScript 類型轉換

1. 對數學運算使用顯式轉換

如果你需要對用戶輸入或任何其他值使用數學運算,則在執行該運算之前,自己進行一次顯式轉換會更安全。這樣,可以避免任何意外行為。

2. 使用模板字面值連接字符串,而不是+

如果需要連接兩個數字,則使用模板文字會更安全。特別是不確定值的類型。

也可以使用顯式轉換來導出相同的結果。

3.當比較值時,使用嚴格的比較(===)

前面我們看到,當使用==時,JavaScript 會執行隱式類型轉換,這會導致不一致的結果。因此,在我們的生產代碼中使用它是不安全的。

為了得出預期的結果,應該始終使用===進行比較。三等號隱含地表示:

我可以同時了解變量的值和類型

因此,如果將數字和字符串與值進行比較,結果將是false,因為它也會考慮變量的類型。

這是獲得預期一致結果的更安全的方法。

在JavaScript中,數據類型有兩種變體。

  • 原始值(字符串、數字等)
  • 非原始值(數組、對象)

到目前為止,我們已經討論了原始數據類型的類型轉換。我提供的第一個示例涉及非原始數據類型,例如數組。

所有非原始數據類型都有一個名為.toPrimitive()的內置函數。比較非原始值和原始值時,此函數會自動將非原始類型轉換為原始類型。在我們看過的第一個示例中,當使用此函數進行非嚴格比較時,空數組將轉換為空字符串。確切地說,用于執行此轉換的確切函數是toString()。因此,空數組(將轉換為空字符串)等于0。

正如我們前面所看到的,當在if條件中檢查空數組時,將執行條件中的行。但是,如果空數組隱式轉換為0怎么辦?

這是在單獨的JavaScript條件下進行的: 真值和虛值 。除了true以外,JavaScript 將大部分有值的視為真值,除了少數值。例如,0,-0,""被視為虛值。由于空數組不被認為是虛值,當在條件中檢查它時,它將作為真值執行。(這里不會發生類型轉換,空數組保留為數組,這是類型轉換不一致的另一個例子。)

總結

JavaScript作為一種松散類型語言,執行隱式類型轉換。這會導致不一致和意想不到的結果。因此,我們應該在任何時候都避免這種類型轉換。如果不確定值的類型,可以使用typeof檢查。檢查類型可以讓我們更好地理解應該如何進行轉換。

~完,我是刷碗智,我要去刷碗了,骨的白~

作者:Viduni Wickramarachchi 譯者:前端小智 來源:stackabuse

原文:https://blog.bitc.io/how-to-avoid-javascript-type-conversions-29e1258f37d8

本文轉載自微信公眾號「大遷世界」,可以通過以下二維碼關注。轉載本文請聯系大遷世界公眾號。

 

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

2021-08-05 15:28:22

JS內存泄漏

2023-01-17 14:01:19

JavaScript類型轉換字符串

2016-11-03 13:00:54

類型轉換javascript

2022-05-26 09:51:50

JavaScrip內存泄漏

2011-07-14 10:58:26

JavaScript強制類型轉換函數

2022-08-16 09:03:01

JavaScript前端

2021-04-29 00:08:21

JavaScript 檢測文件

2016-05-25 10:03:51

JavaScript內存泄露

2009-07-15 16:56:59

Jython類型Java類型

2021-04-20 11:20:24

Java開發運算符

2023-03-20 08:14:11

PHP類型轉換

2021-04-20 10:00:47

JavaScript類型基礎

2020-10-09 09:44:25

JavaScript 開發 應用

2024-12-13 09:42:38

javascripmatch方法

2020-04-06 20:30:37

JavaScriptBoolean開發

2017-09-13 10:58:51

JavaScript轉換規則

2024-07-11 11:42:09

2022-04-08 08:00:00

NFT數字資產騙局

2014-10-15 10:01:12

2017-09-05 16:17:35

JavaScript運算轉換
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品久久久久国产免费第一页 | 精品久久精品 | 亚洲天天干 | 国产精品久久久久不卡 | av资源中文在线天堂 | 欧美五月婷婷 | 好姑娘高清在线观看电影 | 亚州综合一区 | 美女张开腿露出尿口 | 精品伦精品一区二区三区视频 | 精品国产区 | 色吊丝2| 国产95在线 | 国产目拍亚洲精品99久久精品 | 国产一区久久久 | 五月天激情电影 | 国产91一区 | 91免费观看视频 | 国产一区亚洲 | av一级久久| 亚洲视频免费在线观看 | 亚洲 欧美 综合 | 亚洲精选久久 | 一区二区在线 | 欧美无乱码久久久免费午夜一区 | 国产午夜精品久久久 | 国产精品久久久久久亚洲调教 | 国产ts人妖系列高潮 | 久久蜜桃av| 国产亚洲一区二区精品 | 国产丝袜一区二区三区免费视频 | av一级久久 | 特黄特色大片免费视频观看 | 久久久免费电影 | 91香蕉| 欧美a区| 亚洲国产精品一区二区第一页 | 日韩一区二区三区视频 | 国产精品区二区三区日本 | 日韩一区二区在线视频 | 日韩国产中文字幕 |