条件控制语句及表达式

本文详细介绍了JavaScript中的运算符和表达式,包括自增、比较、逻辑运算符等,并探讨了条件控制语句,如if、elseif、else和switch的用法。特别强调了在比较运算中字符串与数值的转换规则,以及逻辑运算符的短路行为。此外,还讨论了条件表达式和逻辑表达式的概念及其优先级。
摘要由CSDN通过智能技术生成

条件控制语句及表达式
一、运算符及表达式
1.++不能和()连在一起使用,但可以在一个式子上

 console.log(++(a--));
  //() 不能和++ 一起使用,报错

2.字符串和数值进行比较(字符串会自动转为数值)

//字符串和数值进行比较

console.log(1>2);//false
console.log('123'>213);//false 字符串会自动转为number
console.log('123A'>213);//false 自动转为number如果不能转就会出现NaN 

3.出现NaN 一般都是false (有例外)

console.log(NaN==NaN);//false

4.undefined是null的派生所以对应的值是相等的

//undefined(null的派生子类) 和 null
console.log(undefined==null);//true undefined的值来自于null,所以值相等
console.log(undefined===null);//false undefined和null不是一个东西

5.字符串和字符串进行比较 (第一位字母的ASCII码比较大小 A: 65, a : 97)

//字符串和字符串比较(ASCII码 A 65 a 96 自动进行ASCII码的比较 比较第一位的)

console.log('a'>'b');//false
console.log('a'<'b');//true
console.log('bAA'<'azz');//false

6.布尔类型的值和null进行比较

//boolean类型的值和null进行比较 boolean自动转number(出现NaN结果为false)

console.log(true>null);//true
console.log(true>undefined);//false undefined转number型会变成NaN

7.布尔类型的其他比较

//恒等 俩个内容是相同的一个内容

console.log(Number(true)==1); //true
console.log(Number(true)===1); //true
console.log(Boolean(0)===false); //true number类型的0转为boolean变成fales,所以类型和数值都一样

8.null值及undefined跟0进行比较

//undefined和0进行比较

console.log(undefined == 0);//false  undefined转为number变成NaN,NaN一般都是false

//null是空对象引用 对应的是一个引用类型 引用类型比较的是地址 null和0进行比较

console.log(null == 0); //false  地址和一个数值不一样

9.逻辑运算符

//逻辑运算符 && 短路与 &断路与 || 短路或 |断路或 !
//&& 所有的同时满足才为真 && 只要前面有一个是假后面的就不会看了 & 看完全部
// &&同真才为真,所以遇到第一个为假时,表达式就已经是假了,就不往下走了,直接输出假的值
// ||同假才为假,所以遇到第一个真的值,表达式就已经是真了,就不往下走了,直接输出真的值

var a=10,b=20,c=30
  console.log(a>b && b<c);//false
  console.log(c>b && b<c);//true
  //|| 有一个是true就是true 前面只要出现了true 就不看后面的 | 看完全部
  console.log(c>b || a>b);//true
  //! 取反
  console.log(!c>b || a>b); //false
  console.log(!(c>b || a>b)); //false
  // || 常用 有一个是true 取true
  console.log(a>b || 20); //20
  var i = 0 || 10
  console.log(i);
  //如果俩个都是false 取最后一个
  var str = undefined || ''
  console.log(str);
  //如果俩个都是true的情况下 取第一个为true的
  var str1 = "A" || "B"
  console.log(str1);//A
  var str2 = "" || 'false' || 'true'
  console.log(str2);//false字符串
  //三目运算 逻辑运算优先级会高于三目运算符
  var str3 = (10 > 20 ? '' : '123') || (30 > 20 ? '' : '456')
  console.log(str3);//123
  //如果出现false 直接取false 如果全是true 取最后一个
  var str4 = 10 && 20 //20
  var str5 = undefined && '' //undefined
  //转成boolean类型
  var str6 = !123 //false
  console.log(str4);
  console.log(str5);
  console.log(str6);

10.表达式的概念:

算术运算符组成的式子叫算术表达式, 如:2+3;

关系运算符组成的式子叫关系表达式或者条件表达式, 如:a>5;

逻辑运算符组成的式子叫做逻辑表达式, 如:a&&b

11.运算符优先级(从上到下执行)

二、程序控制语句
1.控制程序的执行(利用条件控制 利用循环来控制)

2.条件控制语句(只会进入其中一个条件)

条件:条件表达式是一个boolean类型的值,如果不是会自动转换成boolean

if 和 else if 同时满足的情况下 他只会进入第一个满足的条件if

if(条件表达式(boolean类型的值 如果当前这个不是一个boolean的值他会自动转成boolean类型)){
需要执行的代码
}else if(条件表达式){
需要执行的代码
}else{ //上面的都不满足的情况下
需要执行的代码
}
例子:

var a=10,b=20

//从上到下的顺序进行的 上面只有一个进入的下面的内容就不会执行了

if(a>b){
    console.log('我是a的值为'+a)
}else if(a==b){
    console.log('我是b的值为'+b)
}else if(a<b){
    console.log('a的值小于b的值')
}else{
    console.log('上面的都不满足')
}

注:执行的语句如果只有一句代码的时候可以省略对应的{} (多行代码是不行的)

3.条件嵌套 if语句

// 求y的值
var x = prompt()
var y
//可能不是数值
//提取条件优秀级 先找出问题的条件 再找大的条件 再找小的条件
if(Number(x) || x == 0){ /*将字符串(prompt取的值为string类型)转换成number,并把x=0的情况放入if语句中(x=0转成Boolean类型为false)
                 条件语句的目的为:将不能转换成数字的字符串(如字母)的情况去除和把x=0放入if表达式中 */

 if(x<0){
        y = -1
    }else if(x==0){
        y = 0
    }else{
        y = 1
    }
    console.log(y);
}else{
    console.log('您的输入有误');
}

4.switch语句

switch 属于对应的值判断 里面的是对应的表达式(产生对应的值) 下面的case就是一个个的值选项

switch(表达式){
case 值(常量): case 值:
      操作 break;
case 值:
      操作 break;
case 值:
      操作 break;
default: 当上面都不满足的情况下才执行默认的操作
}
例子:

// 指令系统 发送1 吃饭 发送2 游戏 发送3 睡觉 发送4 再来一次 发送5 吃饭
var number = prompt()
//恒等判断 需要对应的类型和值一样

switch(number){
    case '1':  case '5': //1和5干的一样的事情
        console.log('吃饭');
        break
    case '2':
        console.log('游戏');
        break
    case '3':
        console.log('睡觉');
        break
    case '4':
        console.log('再来一次');
        break
    default:
        console.log('默认值');
}

//break 跳出 跳出整个代码块 switch代码以及循环代码块 如果没有break 从头走到底 会从满足条件的第一个走到default里面
//switch 不能判断范围 只能对应的进行特定的值的判断
//if 判断范围 在一定区间内容进行判断(功能更加强大)
//switch的case的值和条件的值必须是恒等比对(类型和值一样)
总结
if else else if 里面的执行语句只有一行可时{}可以省略

if 后面不一定要带else或者else if

if里面的表达式如果不是对应的boolean的表达式 他会强制转换为boolean类型(自动转换)

else 一定的是最后的 而且他是不带条件的

if 里面可以嵌套if 以及相关的内容(else else 都可以嵌套的)

switch 里面填写的表达式是会返回值 这个值一般是常量

switch里面有case和对应的default case表示一个个的选项 对应的default表示默认选项

多个case可以在一行书写 表示对应的处理语句是一个

break用于跳出整个代码块 跳出switch (也可以跳出循环的代码块)

switch必须要有规定的值的时候才有 他不会使用到有区间的内容(比对是恒等比对)

if 是可以使用区间值 也可以使用固定值

if效率和switch效率 从一行代码区分对应的来说 if效率会高点 多行代码区分 switch效率会高(用空间换时间)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值