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

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 of
  • constructor
  • Object.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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值