运算符表达式以及相关控制语句

运算符

算术运算符

+ - * / % ++ --
  1. 除了加法,其他的运算都会先转为number再进行运算(Number),如若转换不成功则会出现NaN

  2. NaN与数值相加结果也为NaN

  3. 加法运算中如果有一方的值为字符串,那么会进行字符串拼接

  4. ++前置和后置的区别是 前置先执行++ 后置后面执行++

  5. 在运算中++不能放在()前,会报错

  6. 运算顺序:先() 后++或者-- 再* / % 最后+-

逻辑运算符

&& || !
  • &&运算:若两方都为true,那么值取最后一个;有一方为false值就取它

  • ||运算:一方为true则取第一个true,都为false就取最后一个false

  • !运算:值取反

比较运算符

> < >= <= != == === !==
  • 当出现的是><号,会自动进行相关的转换(number)

  • 字符串比较会比较对应的ASCLL码值(a 97 A 65)

  • ==只比较值,例如字符串‘123’==数值123,但是NaN!=NaN,undefined==null

  • ===基于==之上,除了比较两方的值外还会比较两方的类型,例如‘123’!=123 undefined!=null

  • !一出现,将结果取反就行

赋值运算符

= += -= *= /= %=
【注】赋值运算符属于最后执行

位移运算符(进位补零)

<<  >>

表达式概念

表达式是由对应的值(变量)和运算符构成的式子

  • 由算法运算符组成的式子称为算法表达式(返回对应的结果)

  • 由逻辑运算符组成的式子称为逻辑表达式(返回对应的值)

  • 由比较运算符组成的式称为条件表达式(返回boolean类型的值)

三目运算符

条件表达式?true:false

示例

/**
*如果2大于3那么返回10  如果不大于则返回20
*/
var result = 2>3?10:20
var un
var a = un ?'你好':'hello'

执行顺序

var a = 100+20*50*0&&20+'hello'-12*8||undefined?(10+12)/10+10%2:(5+2)%2*15+16    //31

有括号先算括号 再算* / % 再 + - 再逻辑运算 再三目运算符 最后赋值

运算符描述
. [] ()对象成员存取、数组下标、函数调用等
++ -- ~ ! delete new typeof void一元运算符
* / %乘法、除法、去模
+ - +加法、减法、字符串连接
<< >> >>>移位
< <= > >= instanceof关系比较、检测类实例
== != === !==恒等(全等)
&位与
^位异或
|位或
&&逻辑与
||逻辑或
?:三元条件
= x=赋值、运算赋值
,多重赋值、数组元素

控制语句

        分为对应的条件控制语句和循环控制语句

        条件控制语句是根据对应的条件来执行对应的代码,循环控制语句是根据对应的条件来执行多次重复的代码

条件控制语句

  • if else (根据对应的boolean条件值来进行判断 传入的条件不是boolean也会转为对应的boolean类型)

  • switch case (根据对应的值来进行比对,采用的是===恒等)

if else

if(条件表达式){
	对应满足条件执行的代码
}else{
	不满足条件执行的代码
}

示例

//判断输入一个数值是奇数还是偶数
var number = prompt('请输入一个数值') //浏览器的一个弹窗 里面可以输入对应的内容 这个内容会返回给你 类型是字符串
// console.log(`number`, number);
// if(number%2==0){
//     console.log(`当前输入的是偶数`);
// }else{
//     console.log(`当前输入的是奇数`);
// }
//如果返回的值不是一个boolean类型的值 自动转为boolean类型
if(number%2){//如果为0就是false 
    console.log(`当前输入的是奇数`);
}else{
    console.log(`当前输入的是偶数`);
}

多分支结构(else if)

多分支结构只有上面有一个满足了条件 下面的都将不会再运行

if(条件1){
	满足条件执行的代码
}else if(条件二){
 	满足条件执行的代码
}...
else{
	所有条件都不满足执行的代码
}

示例

//判断输入一个数值是奇数还是偶数
var number = prompt('请输入一个数值') //浏览器的一个弹窗 里面可以输入对应的内容 这个内容会返回给你 类型是字符串
console.log(`number`, number);
// if(!(number%2) && number%2!=0){ //如果是NaN 不是0
//     console.log(`当前输入出错`);
// }else if(number%2==0){
//     console.log('当前是偶数');
// }else{
//     console.log('当前是奇数');
// }
// if(isNaN(number%2)){ //如果是NaN 
//     console.log(`当前输入出错`);
// }else if(number%2==0){
//     console.log('当前是偶数');
// }else{
//     console.log('当前是奇数');
// }
//利用NaN加任意数值得到都是NaN
if(!(number%2+Infinity)){ //如果是NaN
    console.log(`当前输入出错`);
}else if(number%2==0){
    console.log('当前是偶数');
}else{
    console.log('当前是奇数');
}

if else嵌套

if(条件1){
	if(子条件1){
		满足子条件1执行的代码
		...
	}else if(子条件2){
		满足子条件2执行的代码
	}else{
		不满足子条件执行的代码
	}
}else{
	不满足条件1执行的代码
}

示例

//输入一个值判断奇偶
var number = prompt()
//判断是否输入出错
if(number == ''){
    console.log('输入内容不允许为空');
}else if(!isNaN(Number(number))){
    //当前不是NaN
    if(number%2==0){
        console.log('当前为偶数');
    }else{
        console.log('当前为奇数');
    }
}else{
    //当前是NaN的情况
    console.log('输入错误');
}

if else 支持多层嵌套

if else简化操作

当 if 块或者 else块 只有一行代码的时候是可以省略 {} 的

if(1>2)
	console.log('你好')
else if(2>3)
	console.log('世界')
else 
	console.log('hello world')

        每句代码的结束可以有分号可以没有分号,一般建议加上

        switch case

switch(值表达式){
	case 值1:
		执行的代码
		break;
	case 值2:
		执行的代码
		break;
	defulat:
		上面都不满足 执行的代码
}

示例

//根据输入的值判断对应的执行的操作
// 1 打印游戏 2 打印睡觉 3 打印吃饭
var number = prompt() //字符串
//switch里面采用的是=== 类型必须相等
//在switch 如果没有break 他会从满足条件那句开始直到最后
//break 退出 当前这个switch不执行了
switch(number){
    case '1':
        console.log('游戏');
        break;
    case '2':
        console.log('睡觉');
        break;
    case '3':
        console.log('吃饭');
        break;
    default:
        console.log('活着');
}

switch 嵌套

switch(1){
    case 1:
        switch(2){
            case 2:
                console.log('我是2');
                break;
            default:
                console.log('hello');
        }
        break;
    default:
        console.log('default');
}

if else 和 switch的对比

        if else 常用于区间判断 switch case是用于值判断(枚举类型)

        if else的效率低于switch case(用空间换时间)如果当前只有某个值的判断建议使用switch

总结

  • if else 是用于区间判断 switch case是用于值判断

  • switch case里面使用的判断是恒等判断 (支持所有类型的值)

  • if else 支持嵌套 switch case也支持嵌套 (一般建议不要嵌套俩层以上)

  • if 可以单独用

  • if 的多分枝采用 else if来实现

  • 对应的switch 里面的多分支采用多个case连用

  • if (else if 、else)后面的代码如果只有一行那么可以省略{} 但是我们一般不建议省略

  • if 里面的条件表达式返回的是对应的boolean类型的值 如果当前的式子不是条件表达式 他会自动转换boolean类型

  • if else的效率低于switch case(用空间换时间)如果当前只有某个值的判断建议使用switch(枚举上一般使用switch)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值