web前端开发之JavaScript:if条件语句的那些事
在我们学习第二阶段JavaScript,if条件语句是我们在学习js中必不可少的,JavaScript的if条件语句是用于我们的条件判断,if(){},小括号内是判断的语句,返回的是一个布尔值,true或false。
首先我们再来复习一下js的数据类型吧。
基本数据类型:字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)。
引用类型:对象(Object)、数组(Array)、函数(Function)。
今天主要说的是 if 语句的基础常识和if条件语句的一些特殊情况
if 语句常用的格式有三种
1、if( ){ }
var a =5; var b=6; if (a<b){ console.log("你是对的"); }
2、if(){}else{}
var a =5; var b=6; if (a<b){ console.log("你是对的"); }else{ console.log("你是错的"); }
3、if(){}else if{}else{}
例子:编写判断成绩评比的方法,成绩在0——100之间,不在之间的输出“输入的成绩不符和规则”,
如果大于等于90输出‘A’,大于等于80输出'B',大于等于60输出'C',小于60输出‘D’。
var num; if ( num >= 0 && num <= 100) { if (num >= 90.0) { document.write("A"); } else if (num >= 80.0) { document.write("B"); } else if (num >= 60.0) { document.write("C"); } else { document.write("D"); } } else { alert("输入的成绩不符和规则"); } }
if条件语句的一些特殊情况
一、直接转为false的四种类型
尤其是[] 和{} 这两个可以继续执行if里的语句的! 还有就是数字0 会被做终止操作。
1.数字0
2.NaN
3.空字符串
4.null或undefined
二、这三个"0" "null" "undefined"则会返回true
js这种弱类型语言,赋值啥类型就转换啥类型了,代码规范了还好,要是不规范,就心里翻江倒海。同样的代码这边好着,那边又不行了。这样情况下,还是做一下类型判断。
三、当if([]==false) 则返回true ;if({} == false) 返回false
这是什么鬼 if([])返回 true if([] == false) 也返回true; 心里是不是又翻江倒海。
四、如果if([] == []) 为false; 则 if({} == {}) 也为false
至于三和四 原因是js == 运算符的处理问题
js做 == 操作 经历过程如下:
比较运算x==y,其中和y是值,产生true或者 false.这样的比较按如下方式进行:
1.若Type(x)与Type(y)相同,则
a.若Type(x)为Undefined,返回true。
b.若Type(x)为Null,返回true。
C.若Type(x)为Number,则
i若x为NaN,返回false.
ii. 若y为NaN,返回false.
ii..若x与y为相等数值,返回true.
iv.若x为+0且y为-0, 返回true。
V.若x为-0且y为+0, 返回true。
vi.返回false.
d.若Type(x)为String,则当x和y为完全相同的字符序列(长度相等且相同字符在相同位置)时返回true。否则,
返回false.
e.若Type(x)为Boolean,当x和y为同为true或者同为false时返回true。否则,返回false.
f.当x和y为引用同一对象时返回true。否则,返回false.
2.若x为nulI且y为undefined,返 回true。
3.若x为undefined且y为null,返回true。
4.若Type(x)为Number且Type(y)为String,返回comparison x == ToNumber(y)的结果。
5.若Type(x)为String 且Type(y)为Number,
6.返回比较ToNumber(x) == y的结果。
7.若Type(x)为Boolean,返回 比较ToNumber(x) == y的结果。
8.若Type(y)为Boolean,返回 比较x == ToNumber(y)的结果。
9.若Type(x)为String或Number,且Type(y)为Object, 返回比较x == ToPrimitive(y)的结果。
10.若Type(x)为Object且Type(y)为String或Number,返回比较ToPrimitive(x) == y的结果。
因此[] == false 经历以下的转化过程
([] == false) ----> ([] === +0) ----> (“”== +0) ----> (+0 == +0) ---> true
也就经历了8 9 10 三个过程
因此判断数组和对象是否为空,常用length来判断。
总结:
可以看到在js中可以在if中作为判断的类型很多,但最终都可以看做这些类型的变形。只要掌握了这些最基本的,就可以灵活运用if判断了。
最基本是null,undefined,if判断都是假;对于数值类型,0是假,其他为真;对于字符类型空字符串是假,其他为真,对于方法属性,如果定义了就是真,否则就是假,其他所有都可以看做是这些的变相应用。
勤能补拙,加油!
- 点赞
- 收藏
- 关注作者
评论(0)