day02-运算符及表达式及条件控制语句

d一.运算符

 1.算术运算符   + - * / ++ --

        除+以外的所有运算都会全部先转为number再进行运算,转换不成功出现NaN

        一个数值和NaN相加得到的也是一个NaN

        加法运算如果有一个值为字符串那么会进行字符串拼接

++ 前置和后置

        前置先执行++ 后置后执行++

        ++ --不能放在() 之前

运算对应的顺序

先执行()里的内容 再执行 ++或者--操作 再执行对应的* / %   然后再执行+ -操作

2.逻辑运算符   &&  ||  !

        && 与 俩个都是true 则返回最后一个true  有一个是false就返回第一个false

        || 或 有一个true直接取第一个true 如果都是false取最后一个false

        ! 非 取反操作 将对应的真的变假的 假的变真的 返回的结果是一个boolean类型

3.比较运算符  > < >= <= != == === !==

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

        对应比较的都是字符串那么会比较对应的ascii码(A 65 a 97)

        == 比较值 数值类型123和字符串123是相等的(NaN!=NaN)(undefined == null)

        === 基于==之上 除了比较值还要比较类型 123!='123' (undefined !== null)

        当出现对应的! 对应的将原本的结果取反就可以了

4.赋值运算符   = += -= *= /= %=

        【注意】赋值操作是最后操作

var a = 10
a+=10 //a=a+10 20
a*=10 //a=a*10 200
a/=10 //a=a/10 20
a-=10 //a=a-10 10
a%=2 //a=a%2 0
console.log(a);//0

5.位移运算符(进位补零)   <<  >>

        位移运算是将对应的数值转为二进制进行移位运算(将一个数值转为二进制使用除二取余法)

        怎么快速把2变成8 后面补零   

console.log(2<<2);

二.表达式概念

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

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

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

        由对应的比较运算符组成的式子 条件表达式 (返回boolean类型的值)

 1.三目运算符(三元运算符)   条件表达式 ? true的结果:false的结果

        示例

//如果8大于3那么返回对应的10 如果不大于返回20
var result = 8>3?10:20 

var un
//如果对应的他填写是对应的一个变量或者值 那么他会将这个值直接转换为boolean类型
var a = un?'你好':'hello'
console.log(a);
var a = 100+20*50*0&&20+'hello'-12*8||undefined?(10+12)/10+10%2:(5+2)%2*15+16 //31

执行顺序:先算括号 再算* / % 再 + - 再逻辑运算 再三目运算符 再赋值

 三.控制语句

        控制语句是对应程序的一个控制,分为对应的条件控制语句循环控制语句

        条件控制语句是根据对应的条件来执行对应的代码

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

 1.条件控制语句

        常见的控制语句     if else    switch case

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

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 的嵌套  (允许多层嵌套)     【注意】一般嵌套不超过2层

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块只有一行代码的时候可以省略{}

        每句代码的结束可以没有分号,但是一般建议加上(后续我们需要减少对应的编写的文件的大小我们会把所有的js在一行) )

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:
		上面都不满足 执行的代码
}
//switch里面采用的是=== 类型必须相等
//在switch 如果没有break 他会从满足条件那句开始直到最后
//break 退出 当前这个switch不执行了
//根据输入的值判断对应的执行的操作
// 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(number){
    case '1':
        console.log('游戏');
        break;
    case '2':
        console.log('睡觉');
        break;
    case '3': case '4': case '5':
        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

总结

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

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

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

  4. if 可以单独用

  5. if 的多分枝采用 else if来实现

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

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值