电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

JS不要再到處使用絕對等于運算符了

瀏覽:118日期:2024-03-29 16:52:00
概述

我們知道現在的開發人員都使用===來代替==,為什么呢?

我在網上看到的大多數教程都認為,要預測JavaScript強制轉換是如何工作這太復雜了,因此建議總是使用===。

這些都導致許多程序員將該語言的一部分排除在外,并將其視為一種缺陷,而不是去擴大他們的對該過程的理解。

下面通過兩個使用案例,說明使用==的好處。

1.測試空值

if (x == null)vsif (x === undefined || x === null)2.讀取用戶的輸入

let userInput = document.getElementById(’amount’);let amount = 999;if (amount == userInput)vsif (amout === Number(userInput))

在本文中,我們將通過對比差異,理解強制性,研究一些流行的用例,并最終找到指導我們做出決定的準則,來深入了解該主題。

簡介

在JavaScript中,相等由兩個運算符完成。

1.=== —嚴格相等比較也稱為三等運算符。

2.== — 抽象的相等比較

我一直在使用===,因為我被告知它比==更好和更好,而且我根本不需要考慮它,作為一個懶惰的人,我覺得很方便。

直到我觀看了Kyle或@getfiy的You Do n’t Know JS作者在Frontend Masters上的“ Deep JavaScript Foundations”。

作為一名專業的程序員,我沒有深入思考我每天工作中使用的操作符,這一事實激勵我去傳播意識,并鼓勵人們更多地理解和關注我們編寫的代碼。

事實的根源在哪里

知道真實的原因在哪里很重要。 不是在 Mozilla 的 W3school 上,也不在聲稱===優于==的數百篇文章中,而且在這篇文章中也絕對沒有。。

在JavaScript規范中,我們可以找到關于JavaScript如何工作的文檔。

打破常識1.==只檢查值(松散)

如果看一下規范,從定義中可以很清楚地看出,算法要做的第一件事實際上就是檢查類型。

JS不要再到處使用絕對等于運算符了

2.===檢查值和類型(嚴格)

在這里,我們同樣可以從規范中看到,它檢查類型,如果它們不同,則不會再檢查值。

JS不要再到處使用絕對等于運算符了

雙等號和三等號之間的真正區別是我們是否允許強制轉換。

JavaScript 中的強制轉換

強制轉換或類型轉換是任何編程語言的基礎之一。 這對于動態類型化的語言(例如JavaScript)尤為重要,因為如果類型更改,編譯器不會對它大喊大叫,找它麻煩。

理解強制性意味著我們能夠以與JavaScript相同的方式解釋代碼,從而為我們提供了更大的可擴展性并最大程度地減少了錯誤。

顯性強制轉換

強制轉換可以在程序員調用這些方法之一時顯式發生,從而強制改變變量的類型。

Boolean(), Number(), BigInt(), String(), Object()

事例:

let x = ’foo’;typeof x // stringx = Boolean(’foo’)typeof x // boolean隱藏轉換

在JavaScript中,變量的類型很弱,因此這意味著它們可以自動轉換(隱式強制)。 當我們使用算術運算符+ / — *,周圍的上下文或使用==時,通常是這種情況。

2 / ’3’ // ’3’ 強制轉為 3new Date() + 1 // 強制轉換為以1結尾的日期字符串if(x) // x 被強制為布爾值1 == true // true 被強制為 11 == ’true’ // ’true’ 被強制為 NaN`this ${variable} will be coreced to string

隱性強制是一把雙刃劍,合理使用可以增加可讀性,減少冗長。如果使用不當或被誤解,我們就會有一個讓人失望的公式,人們會咆哮并指責JavaScript。

比較的算法

== 運算符號的算法

1.如果X和Y是相同的類型,則執行===。

2.如果X為null且Y未定義或反之,則為true。

3.如果一個是數字,則將另一個強制為數字。

4.如果一個是對象,則強制轉換為原始對象。

5.其它,返回false。

=== 比較的算法

1.如果類型不匹配false。

2.如果類型匹配-比較值,為NaN時返回false。

3.-0 — true.

流行的用例1. 同類型(多數情況)

如果類型相同,則===與==完全相同。因此,應該使用語義性更強的那個。

1 == 1 // true......1 === 1 // true’foo’ == ’foo’ // true...... ’foo’ === ’foo’ //true

類型不同,我更喜歡用===。

2. 不同類型(原始類型)

首先,我想提醒您注意,不同類型并不意味著未知類型。不知道類型表明代碼中的問題比僅使用===vs==更大。了解類型表明對代碼有更深入的理解,這會減少更多的錯誤。

假設我們有一個數字或字符串的可能性。請記住,算法更偏向數字類型,因此它將嘗試使用toNumber()

let foo = 2;let bar = 32; // number 還是 stringfoo == bar // 如果 bar 是字符串,它會轉換成 numberfoo === Number(bar) // doing basically the samefoo === bar // 哪里 bar 為 string 則該結果為 false3. null和undefined

使用==時,null和undefined彼此相等。

let foo = nulllet bar = undefined; foo == bar // truefoo === bar // false4.非原始類型[對象,數組]

不應該使用==或===來比較對象和數組等非原始類型的數據。

決策準則

1.在所有可以使用的情況下,最好使用==。

2.==具有已知類型,可以選擇強制類型轉換。

3.知道類型總比不知道好。

4.如果不知道類型,就不要使用==。

5.當類型不匹配時,===是沒有意義的。

6.當類型匹配時,===是不必要的。

避免使用 == 情況

在某些情況下,如果不真正了解JavaScript中的虛值,則不應使用==。

== with 0 or '' or ' '== with non primtives== true or == false總結

根據我的經驗,到目前為止,我一直都知道我要處理的變量的類型,如果我不知道,我就使用typeof來只允許我所期望的變量。

需要注意的四點

1.如果你不知道變量類型,那么使用===是惟一合理的選擇

2.不知道類型可能意味著你不理解代碼,請嘗試重構你的代碼

3.知道類型可以編寫更好的代碼。

4.如果類型已知,則最好使用==。

以上就是JS不要再到處使用絕對等于運算符了的詳細內容,更多關于JS的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 杭州用友|用友软件|用友财务软件|用友ERP系统--杭州协友软件官网 | 超声骨密度仪,双能X射线骨密度仪【起草单位】,骨密度检测仪厂家 - 品源医疗(江苏)有限公司 | 篮球架_乒乓球台_足球门_校园_竞技体育器材_厂家_价格-沧州浩然体育器材有限公司 | 电缆接头_防水接头_电缆防水接头 - 乐清市新豪电气有限公司 | 合肥抖音SEO网站优化-网站建设-网络推广营销公司-百度爱采购-安徽企匠科技 | 书法培训-高考书法艺考培训班-山东艺霖书法培训凭实力挺进央美 | RO反渗透设备_厂家_价格_河南郑州江宇环保科技有限公司 | 施工围挡-施工PVC围挡-工程围挡-深圳市旭东钢构技术开发有限公司 | 电子海图系统-电梯检验系统-智慧供热系统开发-商品房预售资金监管系统 | 深圳公司注册-工商注册公司-千百顺代理记账公司 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 新疆十佳旅行社_新疆旅游报价_新疆自驾跟团游-新疆中西部国际旅行社 | 杭州代理记账费用-公司注销需要多久-公司变更监事_杭州福道财务管理咨询有限公司 | 深圳市东信高科自动化设备有限公司| b2b网站大全,b2b网站排名,找b2b网站就上地球网 | [官网]叛逆孩子管教_戒网瘾学校_全封闭问题青少年素质教育_新起点青少年特训学校 | 炒货机-炒菜机-炒酱机-炒米机@霍氏机械| 高考志愿规划师_高考规划师_高考培训师_高报师_升学规划师_高考志愿规划师培训认证机构「向阳生涯」 | 无痕胶_可移胶_无痕双面胶带_可移无痕胶厂家-东莞凯峰 | 高压管道冲洗清洗机_液压剪叉式升降机平台厂家-林君机电 | 登车桥动力单元-非标液压泵站-非标液压系统-深圳市三好科技有限公司 | 衢州装饰公司|装潢公司|办公楼装修|排屋装修|别墅装修-衢州佳盛装饰 | 镀锌角钢_槽钢_扁钢_圆钢_方矩管厂家_镀锌花纹板-海邦钢铁(天津)有限公司 | 升降炉_真空气氛炉_管式电阻炉厂家-山东中辰电炉有限公司 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 扬子叉车厂家_升降平台_电动搬运车|堆高车-扬子仓储叉车官网 | 真空包装机-诸城市坤泰食品机械有限公司 | 防勒索软件_数据防泄密_Trellix(原McAfee)核心代理商_Trellix(原Fireeye)售后-广州文智信息科技有限公司 | 合金ICP光谱仪(磁性材料,工业废水)-百科 | 企业VI设计_LOGO设计公司_品牌商标设计_【北京美研】 | 陶瓷加热器,履带式加热器-吴江市兴达电热设备厂 | 家用净水器代理批发加盟_净水机招商代理_全屋净水器定制品牌_【劳伦斯官网】 | 天津力值检测-天津管道检测-天津天诚工程检测技术有限公司 | 一体化预制泵站-一体化提升泵站-一体化泵站厂家-山东康威环保 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | 网优资讯-为循环资源、大宗商品、工业服务提供资讯与行情分析的数据服务平台 | 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 建筑工程资质合作-工程资质加盟分公司-建筑资质加盟 | 点焊机-缝焊机-闪光对焊机-电阻焊设备生产厂家-上海骏腾发智能设备有限公司 | 列管冷凝器,刮板蒸发器,外盘管反应釜厂家-无锡曼旺化工设备有限公司 |