if和==到底是怎么判断的?
2018-05-15 本文已影响0人
夜舞暗澜_3ea2
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&*(*&*&*^";
- 数组比大小时:
- 不会给你排序的,
[3,2,1] > [1,2,3] ==> true
。 - 对于内容为字母和数字的,数组依次按顺序比较同样位置上的元素,直到有结论为止。同样,后面的不看了……
['a'] > ['Z','b','c','d','e'] ==> true
- 不会给你排序的,