小编给大家分享一下JavaScript中为什么不能随便使用绝对等于运算符,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
JavaScript是一种什么语言
JavaScript是一种动态类型,弱类型的语言,基于对象和事件驱动并具有相对安全性并广泛用于客户端网页开发的脚本语言,同时也是一种广泛用于客户端网络开发的脚本语言。它主要用来给HTML网页添加动态功能,现在JavaScript也可被用于网络服务器,如node . js。
概述
我们知道现在的开发人员都使用===来代替==,为什么呢?
我在网上看到的大多数教程都认为,要预测JavaScript强制转换是如何工作这太复杂了,因此建议总是使用===,
这些都导致许多程序员将该语言的一部分排除在外,并将其视为一种缺陷,而不是去扩大他们的对该过程的理解。
下面通过两个使用案例,说明使用==的好处。
1。测试空值
if (x ==, null) vs if (x ===, undefined | |, x ===, null)
2。读取用户的输入
let userInput =, . getelementbyid(& # 39;数量# 39;); let amount =, 999; if (amount ==, userInput) vs if (amout ===,数量(userInput))
在本文中,我们将通过对比差异,理解强制性,研究一些流行的用例,并最终找到指导我们做出决定的准则,来深入了解该主题。
简介
在JavaScript中,相等由两个运算符完成。
1。===-严格相等比较也称为三等运算符。
2。==-抽象的相等比较
我一直在使用===,因为我被告知它比==更好和更好,而且我根本不需要考虑它,作为一个懒惰的人,我觉得很方便。
直到我观看了凯尔或@getfiy的n # 39;你知道JS作者在前端上主人的“深JavaScript基金会”。
作为一名专业的程序员,我没有深入思考我每天工作中使用的操作符,这一事实激励我去传播意识,并鼓励人们更多地理解和关注我们编写的代码。
事实的根源在哪里
知道真实的原因在哪里很重要。不是在Mozilla的W3school上,也不在声称===优于==的数百篇文章中,而且在这篇文章中也绝对没有. .
在JavaScript规范中,我们可以找到关于JavaScript如何工作的文档。
打破常识
1。==只检查值(松散)
如果看一下规范,从定义中可以很清楚地看的出,算法要做的第一件事实际上就是检查类型。
let x =, & # 39; foo # 39;; typeof x //字符串 时间=x 布尔(& # 39;foo # 39;) typeof x //,布尔
隐藏转换
在JavaScript中,变量的类型很弱,因此这意味着它们可以自动转换(隐式强制)。当我们使用算术运算符+/- *,周围的上下文或使用==时,通常是这种情况。
2,/, & # 39; 3 & # 39;,//, & # 39; 3 & # 39;,强制转为,3 new 日期(),+,1,//,,强制转换为以1结尾的日期字符串 如果(x),//, x 被强制为布尔值 1,==,true //, true 被强制为,1 1,==,& # 39;真正的# 39;,//,& # 39;真正的# 39;,被强制为,NaN ”却;能够${变量},will be coreced 用字符串
隐性强制是一把双刃剑,合理使用可以增加可读性,减少冗长。如果使用不当或被误解,我们就会有一个让人失望的公式,人们会咆哮并指责JavaScript。