前言
- 本文是对于个人学习的总结,如有不对,请指出。
- 本文有些可能是自己的看法,所以仅供参考
关于if
- if语句是编程语言最常用的语句,js也是一样
if(xx){ true statement;}else{ false statement;}
这是最常见的语句 - (xx)一般会有两种情况
一种是xx本身就是布尔值,也就是true和false,
还有一种就是,xx是个表达式, - 若是本身就是布尔值,那么按类输出,
若是表达式,那么js解释器就会强制将其转换成布尔类型 - 如何转化呢?
-- undefined和null的类型会被转换成false
-- number(数字类型),+0、-0、NaN这三种会被转化成false
其它的数字都会转化成true
-- string(字符串),空字符串(''
)是false,其它都是true
-- object(对象),所有的对象都会被转化成true - 转化完成以后,也是一样按类输出,true就输出true statement,
false就输出false statement
关于==
- == 两个等号是近似相等的意思,===三个等号才是严格等于
区别在于,==两个等号,会转化类型,三个等号不会,类型不一致就是不对的 - 那么两个等号,js会如何处理呢
-- 首先undefined会被转化成NaN,null会被转化成0
但是记住js明确规定了一点,undefined==null ,这是正确的
所以两个等号两边是这个的时候,不用考虑转化,就是对的
-- 对于布尔值,true转化成1,false转化成0
-- string(字符串),“abc”这类的纯英文,会被转化成NaN
“123”,这类数字型的字符串,会被转化为数字
-- 对于object(对象),因为对象理由属性,
会先调用valueof属性,获取结果再判断,
如果没有再调用tostring,获取结果再判断 - 转化完成之后在进行判断,看两边是否相等
总结
- 我的感觉就是,if最主要的就是判断条件是否成立,来决定如何输出
- ==最主要的就是看能否转成数字进行比对,数字大小总是好比对些