web前端开发之JavaScript:if条件语句的那些事

举报
运气男孩 发表于 2020/07/22 00:06:20 2020/07/22
【摘要】 在我们学习第二阶段JavaScript,if条件语句是我们在学习js中必不可少的,JavaScript的if条件语句是用于我们的条件判断,if(){},小括号内是判断的语句,返回的是一个布尔值,true或false。

在我们学习第二阶段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是假,其他为真;对于字符类型空字符串是假,其他为真,对于方法属性,如果定义了就是真,否则就是假,其他所有都可以看做是这些的变相应用。


    勤能补拙,加油!


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。