首页 > 分享 > 关于js中''、0、false、[]和{}等==的判断逻辑

关于js中''、0、false、[]和{}等==的判断逻辑

最新推荐文章于 2023-12-11 09:07:07 发布

萧逸才 于 2017-05-28 13:06:35 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

这个问题也是我在写代码的途中遇到的,觉得有点意思,先附上我当时写的代码,如下:

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> </body> <script type="text/javascript" src="jquery-3.0.0.min.js"></script> <script type="text/javascript"> $(function () { check(0); }); function check(a) { if (a==""){ console.log("校验不通过"); return } console.log("校验通过"); } </script> </html>

123456789101112131415161718192021

在我的预想中除非a的值是空串,否则结果应该是通过的,但上面的运行结果却是不通过,我还是太young了,所以当时我只好把check(0)换成了check(‘0’),然后运行通过了,后来我才了解到在js中进行==判断的话认真你就输了,要么你使用===,要么你必须是同类型来比较,check(‘0’)就是如此,然后我又做了一些测试,

测试代码如下:

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> </body> <script type="text/javascript" src="jquery-3.0.0.min.js"></script> <script type="text/javascript"> $(function () { check(); }); function check() { console.log("0 == '' is " + (0 == "")); console.log("false == '' is " + (false == "")); console.log("[] == '' is " + ([] == "")); console.log("{} == '' is " + ({} == "")); } </script> </html>

1234567891011121314151617181920

测试运行结果如下:

0 == '' is true false == '' is true [] == '' is true {} == '' is false1234

  what are you 弄啥啊?从运行结果我们首先可以知道0和”还有false相等我们是可以接受的,因为他们在js的逻辑判断中本来就是false的,而{}不等于”也是可以理解的,因为{}在js的逻辑判断中是为true的,但是[]等于”是什么鬼,因为[]的逻辑判断是true,而”是false,他俩居然相等,所以this is a problem。
  答案揭晓,其实在进行数组直接与true和false的布尔类型比较时,默认是将数组和布尔类型都转化为了Number类型进行比较,空数组转化为Number类型时为0,所以[]==”没毛病……
  but,请注意一点,null和undefined和”的比较结果也都是false的。

参考:http://www.cnblogs.com/wait-hua/p/5700342.html

相关知识

一道js题 [] == ![] 引发关于严格运算符(===)和相等运算符(==)的思考?
js中的0.1+0.2!==0.3
【Vue3】如何一个项目实现PC/移动端的多端适配
JS中 let 和var的区别
逻辑回归(Logistic Regression)
逻辑回归简单案例分析
利用JS代码实现HTML网页飘落樱花特效(附代码)
Stripe & JS: 支付集成教程在这个Stripe & JS教程中,我将展示如何使用Stripe支付集成、
js水仙花数原理
java多条件判断

网址: 关于js中''、0、false、[]和{}等==的判断逻辑 https://m.huajiangbk.com/newsview1101276.html

所属分类:花卉
上一篇: 决策树模型
下一篇: 感知机模型(perceptron