条件控制语句及表达式
运算符及表达式
1.()前面不能直接用++
console.log(++(a--)); //() 不能和++ 一起使用
2.str 与 Number值比较(字符串比较时会自动变为Number值)
console.log('123A'>213);//false 自动转为number如果不能转就会出现NaN
注意:转Number值的时候是用的Number方法(有不能转换的字符换会直接转变成NAN)!
3.比较之中只要出现NAN无论是啥一般全是false
console.log(NaN==NaN);//false
4.undefined是null衍生出来了的所以是其儿子,值相等。但是类型不同所以是==而不是===
//undefined(null的派生子类) 和 null console.log(undefined==null);//true console.log(undefined===null);//false
5.字符串之间的比较就是用的ASCII码比较的,如果有多个字母进行比较,那么先比较第一位,哪一位的ASCII大那就谁大,如果第一个字母相同,那么就用第二字母进行比较。跟第一个字母相同,谁的ASCII码大谁就大,依次类推第二个字母相同就比第三个。{A:ASCII码为 65 a: 为 97 }
//字符串和字符串比较(ASCII码 A 65 a 96 自动进行ASCII码的比较 比较第一位的) console.log('a'>'b');//false console.log('a'<'b');//true console.log('bAA'<'azz');//false console.log('azA'<'azz');//false
6.布尔类型的值和NULl进行比较
//boolean类型的值和null进行比较 自动转数值(出现NaN是false) console.log(true>null);//true console.log(true>undefined);//false
7null值及undefined跟0进行比较
//undefined和0进行比较 console.log(undefined == 0);//NaN false //null是空对象引用 对应的是一个引用类型 引用类型比较的是地址 null和0进行比较 console.log(null == 0); //false
逻辑运算符
<script> var str = ''|| undefined console.log(str);//undefined var str1 ="A" ||"B" console.log(str1);//A var str2 = '' || "B"||"C" console.log(str2);//B //|| 逻辑运算规则 如果两个都是 false取最后一个 如果两都是true的情况下面 取第一个true值 如果有false跟true 取第一个true值 var str3 = 10 > 20 ? '' :("123" || 30 > 20) ? '' : '456' console.log(str3);//空 //判断10>20的正确性 如果为true则输出空 如果是在在判断‘123’ || 30>20 的正确性 依照||逻辑运算的规则两个值都为true选择第一个值所以他会输出‘’所以判断10>20无论是true还是false都是输出空字符 var str6 = (10 > 20 ? '' :"123") || (30 > 20 ? '' : '456') console.log(str6);//123 //重:理解 三目运算 三目运算和高于逻辑运算优先级 var str4 ="A" && "B" console.log(str4);//B var str5 = 'abc' && 'undefined' console.log(str5);//undefined //&& 逻辑运算规则 如果出现false 直接取false 如果全是true 就取最后一个 </script>
1.|| 逻辑运算规则 如果两个都是 false取最后一个 如果两都是true的情况下面 取第一个true值 如果有false跟true 取第一个true值
2. var str3 = 10 > 20 ? ” :(“123″ || 30 > 20) ? ” : ‘456’ console.log(str3);//空
//判断10>20的正确性 如果为true则输出空 如果是在在判断‘123’ || 30>20 的正确性 依照||逻辑运算的规则两个值都为true选择第一个值所以他会输出‘’所以判断10>20无论是true还是false都是输出空字符
3.&& 逻辑运算规则 如果出现false 直接取false 如果全是true 就取最后一个
4.重:理解 三目运算 三目运算和高于逻辑运算优先级
运算符优先级(从上到下执行)
程序控制语句
条件控制语句(只会进入其中一个条件)
if 如果(第一个条件) else if 如果(第二个条件 无限加) else 否则(只有一个
上面都不满足的情况)
if 和 else if 同时满足的情况下 他只会进入第一个满足的条件
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('上面的都不满足') }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('上面的都不满足') }
是否符合标准体重
var number2 = prompt(“请输入你的身高”) var number3 = prompt(“请输入你的体重”) var number4 = (number2 – 108) * 2 if (!(number2 * 1) && number2 != 0) { console.log(“你这个小子又在乱输入是吧,快给我重新输入”); } else if (!(number3 * 1)&& number3 != 0) { console.log(“你这个小子又在乱输入是吧,快给我重新输入”); } else if (number2 < 108) { console.log(“你这个小子没有1米1是把”); } else if (number2 > 230) { console.log(“你这个小子比2米三还高是把”); } else { if (number4 – 10 < number3 && number3< number4 + 10) { console.log(“你的身体嘎嘎棒”); } else { console.log(“你的身体体重有点问题哦”); } }
其中
if (!(number2 * 1) && number2 != 0) { console.log(“你这个小子又在乱输入是吧,快给我重新输入”); } else if (!(number3 * 1)&& number3 != 0) { console.log(“你这个小子又在乱输入是吧,快给我重新输入”); }
这两窜代码,是为了防止用户乱输入除了数字以外的东西,因为if这个东西特殊在if的括号里面只有是true或者是false我们为了防止输入数字以外的字符*1的原因是把number3的值转换成数值,如果是数字转化成的就只正常的数值,如果有英文字母,因为用的是Number方法,有英文字母就会变为NAN,而NAN的布尔值为false又因为是要为英文的时候运行所以要在前面加个取反符号把其值变为ture而数字0的布尔值也是false所以我们得加个值并且0这个值不进去所以加上&&number3!=0的值不等于0.
switch
switch 属于对应的值判断 里面的是对应的表达式(产生对应的值) 下面的case就是一个个的值选项
switch(表达式){ case 值(常量): 操作 break; case 值: 操作 break; case 值: 操作 break; default: 当上面都不满足的情况下才执行默认的操作 }
等级的分数
<script> var munber1 =prompt("请输入等级ABCD") switch (munber1) { case "A":{ console.log("80-100"); break; } case "B":{ console.log("70-79"); break; } case "C":{ console.log("60-69"); break; } case "D":{ console.log("<60"); break; } default:{ console.log("error"); } } </script>
//break 跳出 跳出整个代码块 switch代码以及循环代码块 如果没有break 从头走到底 会从满足条件
的第一个走到default里面
//switch 不能判断范围 只能对应的进行特定的值的判断
//if 判断范围 在一定区间内容进行判断(功能更加强大)
今日所学
1.运算符的运算顺序
2.逻辑运算符的运算规则
3.if的用法 嵌套使用等等
4.swichd的用法,一个萝卜一个坑占内存、
5.if效率和switch效率 从一行代码区分对应的来说 if效率会高点 多行代码区分 switch效率会高(用
空间换时间)