条件控制语句及表达式

运算符及表达式

() 前面不能直接写++

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

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

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

console.log(1>2);//false

console.log('123'>213);//false 自动转为number

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

出现NaN 一般都是false

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

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

//undefined(null的派生子类) 和 null

console.log(undefined==null);//true

console.log(undefined===null);//false

字符串和字符串进行比较 (第一位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

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

//boolean类型的值和null进行比较 自动转数值(出现NaN是false)

console.log(true>null);//true

console.log(true>undefined);//false

会先转换再进行比较

//恒等 这个俩个内容是一个内容

console.log(Number(true)==1);//true

console.log(Number(true)===1);//true

console.log(Boolean(0)===false);//true

null值及undefined跟0进行比较

//undefined和0进行比较

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

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

console.log(null==0);//false

逻辑运算符

//逻辑运算符  && 短路与 &断路与 || 短路或 |断路或 !

//&& 所有的同时满足才为真 && 只要前面有一个是假后面的就不会看了 & 看完全部

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);

表达式的概念:

由运算符和操作数(变量或常量)组成的式子

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

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

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

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

运算符描述

. [] ()对象成员存取、数组下标、函数调用等

++ -- ~ ! delete new typeof void一元运算符

* / %乘法、除法、去模

+ - +加法、减法、字符串连接

<< >> >>>移位

< <= > >= instanceof关系比较、检测类实例

== != === !==恒等(全等)

&位与

^位异或

|位或

&&逻辑与

||逻辑或

?:三元条件

= x=赋值、运算赋值

,多重赋值、数组元素

程序控制语句(所有的程序都有的 所有的语言都有)

控制程序的执行(利用条件控制  利用循环来控制)

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

if 如果(第一个条件) else if 如果(第二个条件 无限加) else 否则(只有一个 上面都不满足的情况)

if 和 else 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('上面的都不满足')

}

示例

//参军条件 身高大于170

var height = prompt('请输入你的身高') //string值的

if(!(height*1)){//NaN

    console.log('兄弟 绕我一命!!');

}else if(height>230 || height<50){

    console.log('恭喜你超出人类标准');

}else if(height>170){//自动转为number类型

    console.log('恭喜你满足条件了');

}else{

    console.log('当前不满足条件');

}

当前只有一句代码的时候可以省略对应的{} (多行代码是不行的)

条件嵌套

// 保证良好的缩进 保证可读性

// 求y的值

var x = prompt()

var y

//可能不是数值

//提取条件优秀级 先找出问题的条件 再找大的条件 再找小的条件

if(Number(x) || x == 0){

    if(x<0){

        y = -1

    }else if(x==0){

        y = 0

    }else{

        y = 1

    }

    console.log(y);

}else{

    console.log('您的输入有误');

}

switch

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

switch(表达式){

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 判断范围 在一定区间内容进行判断(功能更加强大)

总结

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效率会高(用空间换时间)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容