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

运算符

算术运算符
+ - * / % ++ --
  • 除了加法的所有运算全部会先转为number再进行运算(Number)转换不成功出现NaN
  • 一个数值和NaN相加得到的也是一个NaN
  • 加法运算如果有一个值为字符串那么会进行字符串拼接
  • ++ 前置和后置 前置先执行++ 后置后执行++
  • ++不能放在() 之前
  • 运算对应的顺序 先执行()里的内容 再执行 ++或者--操作和对应的* / % 再执行+ -操作
逻辑运算符
&&  ||   !
  • 与(&&) 俩个都为true 取最后一个 有一个为false就取第一个false
  • 或(||) 有一个true就取第一个true 都为false就取最后一个false
  • 非(!)取反
比较运算符
> < >= <= != == === !==
  • 当出现的是> <号他会自动进行相关的转换(number)
  • 对应比较的都是字符串那么会比较对应的ascii码(A 65 a 97)
  • == 比较值 数值类型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
//如果对应的他填写是对应的一个变量或者值 那么他会将这个值直接转换为boolean类型
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 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')

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

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(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


总结

  • 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)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容