奕玖科技 > 新闻中心 > 技术文章

JavaScript等于和绝对等于==or===的区别

来源: 奕玖科技 瘦死的猪 | 2023/1/11 13:26:50

JavaScript是一个自由的语言,所以因为太过于自由,然后后期不得不为自由做一些改变,等于==和绝对等于===貌似是两个同样得东西,但是在JavaScript这里貌似又不是那么一回事,我们看一段代码示例

Let a="0"
if (a==0){
  console.log(true)
}else{
  console.log(false)
}

毫无疑问,这个示例代码显示得是true,但我们仔细看代码其实上面得代码是有问题得,因为我们定义得变量a用了""号所以实际它是一个字符串,但是我们做if比较得时候是比较的数字0,一个是数字一个是字符串如果严格来说它们不是相等的关系,只是js帮我们做号了转换的事情,所以上诉代码if等于true。而这行代码容易出现bug,我们改变一下代码用于实际环境中,如下

let a="1"
if (a==0){
  a+=5
}

按照我们一般的理解,现在a的值是6,但是实际结果是15。这是因为字符串相加就等于相连,1连接5自然等于15。如果我们平常没注意的话,那么我们就得到了一个错误的计算值,而且还很难发现。其实本质上a并不等于0,只是用==号js会帮我们转换成同一个类型在进行比较。

那么绝对等于===作用就体现出来了啊,绝对等于就是对比的两项要绝对的等于包括它们的类型,下面示例代码

console.log(a==0)
console.log(a===0)
console.log(a==="0")

上面的代码运行结果分别为true,false,true。所以我们可以明显感觉的出来,如果用于对比操作的话尽量用===会更安全,因为它可以确保等于的值一定相等,而==不会。

另外我们在看一段示例

let a=Array()
a=[3,4,5]
let b=Object()
b=[3,4,5]
console.log(a==b)
console.log(a===b)
console.log(a,b)

打印后如下图

这里我们发现==和===是没啥区别的,然后我们作死在改一下代码。

let a=String()
a="0"
let b=Object()
b=0
console.log(a==b)
console.log(a===b)

得到结果true,false,这里虽然用了object但是比对又不同了。然后我们统一做一个总结把

等于和绝对等于的区别

1、数字Number和字符串String==会把它们转换成相同的类型进行对比,而===不会,所以"0"和0==等于true而===等于false,因为这2个值类型不同。

2、Array和Object==和===是没有区别的。

3、如果是基础类型和高级类型(Object),比如Object,String==和===的区别类似与第一条,因为==会把高级类型转换为基础类型,而===不会。

4、特别说明,既然是等于那就有不等于是不是,==不等于是!=,而===是!==,它们的性质是一样的,可以参考上诉3条。

最后总结

现在我们应该明白了==和===的区别了把,所以在实际开发中,如无特殊情况我们尽量使用===号来进行对比操作,因为这样可以尽量的减少BUG的产生

栏目导航
相关文章
文章标签
关于我们
公司简介
企业文化
资质荣誉
服务项目
高端网站定制
微信小程序开发
SEO排名推广
新闻动态
行业新闻
技术学院
常见问题
联系我们
联系我们
人才招聘
联系方式
Q Q:24722
微信:24722
电话:13207941926
地址:江西省抚州市赣东大道融旺国际3栋
Copyright©2008-2022 抚州市奕玖科技有限公司 备案号:赣ICP备2022010182号-1