js中的判断操作语句详解(易错题)

    xiaoxiao2023-11-24  151

    JS中的判断操作语句

    1.if/else if/else

    只要有一个条件成立,后面不管是否存在成立的条件都不再判断执行了 【关于条件可以怎么写?】 不管你在条件判断中写什么,最后总要把其计算出TRUE/FALSE来判断条件是否成立。(把其他类型的值转化为布尔类型,只有0 NaN ‘’ null undefined五个是false,其余都是true)比如if(0)

    '3px'/3=>NaN 3px转成数字是NaN '50'/5=>10

    在js中,+ - * / % 都是数学运算符,除了+以为,其余运算符在运算的时候,如果遇到了非数字类型,首先会转化为数字类型(number),然后再进行运算。

    '3px'+3='3px3'

    在js中除了数学相加,还有字符串拼接作用(如果运算中遇到了字符串,则为字符串拼接而不是数学相加)

    if('3px'+3)=>'3px3'true if('3px'-3)=>NaN false if(NaN>3)=> false {}+'str'=>NaN []+'str'=>'str' null+'str'=>'nullstr' undefined+'str'=>'undefinedstr'

    【注意】typeof a中数组和对象都输出object a.toString()中【】转化为字符串,{}是【object object】

    BAT面试题(易错)

    ‘3’ 第一行结果是NaN, NaN和谁都不相等,NaN==NaN是错误的!typeof NaN是’number’,所以输出’3’ alert 的输出结果是字符串,所以说不是3!

    typeof

    在JS中用来检测数据类型的方式之一,除了它以外还有:

    instance ofconstructorObject.prototype.toString.call() 语法:typeof [value] =>检测value的数据类型 返回值:使用typeof检测出的结果是一个字符串,字符串包含着对应的数据类型,例 'number'/'string'/'boolen'/'undefined'/'object'/'function' [特例]typeof null=>'object'确实属于基本类型值,但null代表空对象指针(没有指向任何的内存空间),可以理解为typeof的bug typeof检测数/正则/对象,最后返回的都是'object',也就是基于这种方式无法细分对象
    面试题
    console.log(typeof []);=>'object' console.log(typeof typeof []);=>'string'

    2.三元运算符判断

    语法:条件?成立做的事情:不成立做的事情;相当于简单的if/else

    var num=12; if(num>10){ num++; } else{ num--; } //改成三元运算符 num>10?num++:num--;

    特殊情况

    //=>如果三元运算符中某一部分不需要做任何处理,用null/undefined/void 0...占位即可。不可以不写,不写会报错 var num=12; num>10?n++:null; num>10?n++:void 0; num>10?n++:undefined; //=>如果需要执行多项任务操作,我们把其用小括号包裹起来,每条操作语句用逗号分隔 num=10; num>=10?(num++,num*=10):null;

    思考题:

    3.switch case

    JS中的一种判断方式应用于变量(或表达式)在不用值情况下的不同操作,每一种case结束后都要加break(结束整个判断)。

    switch(num){ case 10: num++; break; case 5: num--; break; default: num=0; }

    【小知识点】 n++和n=n+1一样吗? 在是数字时一样,字符串的时候不一样,所以最好用n++

    var n='10'; n=n+1; console.log(n);=>101 字符串拼接 var n='10'; n++; cosnole.log(n);=>11 还是数学运算

    【特殊性】

    '10'===10=>false 绝对比较,如果两边数据类型不一样,则直接不相等,它要求类型和值都完全一样才相等(真实项目中未来保证代码的严谨性,我们应该更多使用绝对比较) '10'==10;=>true =>相等比较,如果等号左右两边的类型不一样,首先会转化为一样的数据类型,然后再进行比较 =>当前案例中,就是把字符串'10'转换为数字了,然后再比较的

    switch case中每一种case情况的比较都是基于**’==='绝对相等**来完成的

    【break】 不加break,不管后面的条件是否成立都被会执行,利用此机制,可以完成一些特殊的处理,例如num=5,num=10都要做同一件时间,那么我们写在一起,不用加break;

    var num=5; switch(num){ case 10: case 5: num--; break; default: num=0; } console.log(num);=>4

    for循环

    var ary=[12,23,34]; //=>倒着输出每一项 for(var i=ary.length-1;i>=0;i--) { console.log(ary[i]); } //输出奇数项内容 for(var i=0;i<ary.length;i+=2) { console.log(ary[i]); }
    最新回复(0)