什么是编程?通俗意见上来讲,就是把人的思维与步骤通过代码的形式书写展示出来,JavaScript的流程控制包含条件判断if,switch选择,循环for while;if(表达式 条件)=>真{语句}
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>条件判断if else</title> 7 <script> 8 // var score=? 9 // var score=50; 10 // if(score>90) 11 // { 12 // console.log('执行该语句') 13 // } 14 // else 15 // { 16 // console.log('不满足上面条件,执行该语句') 17 // } 18 19 var score=79; 20 if(score>90) 21 { 22 console.log('score>90执行该语句') 23 } 24 else if(score>80) 25 { 26 console.log('score>80执行该语句') 27 } 28 else 29 { 30 console.log('不满足上面条件,执行该语句') 31 } 32 </script> 33 </head> 34 <body> 35 </body> 36 </html>
如果要求90<=score<=100,执行结果为123,80<=score<90,执行结果为456,否则都是789
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>if else 区间执行</title> 7 <script> 8 var score=70; 9 if(90<=score<=100){ 10 console.log("123") 11 } 12 else if(80<=score<90) 13 { 14 console.log('456') 15 } 16 else 17 { 18 console.log('789') 19 } 20 </script> 21 </head> 22 <body> 23 </body> 24 </html>
通过上面代码,我们发现,不论score=?,它的值永远是123,这是为什么了?原来:这样写不能实现你想要的逻辑,但这表达式本身是合法的复合表达式。这个表达式由两个关系运算符组成,关系运算符是左结合的,故C语言是这样解释这个表达式的:先看左边的90<=score,这个关系运算表达式的结果是布尔值:true or false然后表达式就变成了 “前次布尔结果”<= 100,这还是一个关系运算表达式,前次的boolean结果如果为ture就会自动转换为整型1,这样整个表达式就变成了 1 <= 100。同理,前次bool为false的话,整个表达式就成了 0 <= 100。不管前面是0还是1,都小于100,所以整个表达式永远为true按照你的逻辑,应该写成逻辑与表达式: 90 <= score && score <= 100
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>if else 区间执行解决办法</title> 7 <script> 8 var score=70; 9 if(90<=score&&score<=100){ 10 console.log("123") 11 } 12 else if(80<=score&&score<90) 13 { 14 console.log('456') 15 } 16 else 17 { 18 console.log('789') 19 } 20 </script> 21 </head> 22 <body> 23 </body> 24 </html>