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

运算符

算术运算符

+ - * / % ++ --
  • 除了加法的所有运算全部会先转为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'

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

赋值运算符

= += -= /= *= %=

赋值运算符的优先级最低,也就是属于最后执行的(赋值操作是最后操作)

位移运算符(进位补零)

<<  >>

表达式概念

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

由对应的算术运算符组成的式子叫做算术表达式(返回对应的值)

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

由对应的比较运算符组成的式子叫做条件表达式(返回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(`当前输入的是偶数`);
}
​
​
if(!(number%2) && number%2!=0){ //如果是NaN 不是0
    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(`当前是奇数`);
}

多分支结构(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;
    case 值3:
        执行的代码
        break;
    default:
        上面的都不满足 执行的代码
}

示例

//根据输入的值判断对应的执行的操作
//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 case(枚举上一般使用switch)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值