if和==到底是怎么判断的?

if作为最基本的条件判断语句经常的、广泛的被使用,配合使用的还有==运算符。但是这两个符号究竟是如何计算真值的?

简单判断:直接查表

原文翻墙:-> oh my dear js
国内转载:-> JavaScript 真值表
(这个页面不算难,可以写个丑版娱乐一下~)

⚠️ 在if判断中不通过的值不一定等同于false!!!

⚠️ 真正的number中只有1 == true;0 == false;其他的值既不为true也不为false!!

提示:如果希望严格判断真值,可以加"!!"做强制类型转换!

然后有些好玩的东西:

  • 这个表里有个很好玩的地方,就是既有“>= && <=”又有“==”,因为这两种情况真的不相等。比例如[[]] >= [] && [[]] <= []为true,但是[[]] > [] && [[]] < []为false,且[[]] == []为false。原因可能是,在做大小比较时,JS将数组转化为String类型,此时[[]]和[]就相等了。可是做==时,两边都是Array所以做全等比较,的确又不相等了(555555……好复杂……)
  • 两个字符串比较大小时,JS只会比较其首字的编码值(str.charCodeAt()),其他都不看了……和数组比大小意思一样。比如"a" > "Abjdfkhafjkhkdbch&*(*&*&*^";
  • 数组比大小时:
    1. 不会给你排序的,[3,2,1] > [1,2,3] ==> true
    2. 对于内容为字母和数字的,数组依次按顺序比较同样位置上的元素,直到有结论为止。同样,后面的不看了……['a'] > ['Z','b','c','d','e'] ==> true

你可能感兴趣的:(if和==到底是怎么判断的?)