流程控制基本概念
- 默认情况下,浏览器会按书写从上至下顺序执行程序中的每一行代码,但是这并不能满足我们所有的开发需求;
- 为了方便我们控制程序的运行流程,JavaScript提供3种流程结构,不同的流程结构可以实现不同的运行流程。这3种流程结构分别是顺序、选择、循环三种基本控制结构构造.
-
顺序结构:默认的流程结构。按照书写顺序从上至下执行每一条语句。
-
选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。
-
循环结构:在给定条件成立的情况下,反复执行某一段代码。
-
选择结构-if基本概念
.if第一种形式
- 表示如果
条件表达式
为真
,执行语句块1,否则不执行。
if(条件表达式)
{
语句块1
}
后续语句;
- 示例:
if(age > 18)
{
console.log("开网卡");
}
2.if第二种形式
- 如果
条件表达式
为真
,则执行语句块1,否则执行语句块2
if(条件表达式)
{
语句块1
}else{
语句块2
}
- 示例:
if(age > 18)
{
console.log("开网卡");
}else{
console.log("喊你妈来");
}
- 特点:
- if和else后面的代码块({})只有一个会被执行
3.if第三种形式
- 如果
条件表达式
1为真
,则执行语句块1,否则判断条件表达式2
,如果为真执行语句块2,否则再判断条件表达式3
,如果真执行语句块3, 当表达式1、2、3都不满足,会执行最后一个else语句。
if(条件表达式1)
{
语句块1
}else if(条件表达式2){
语句块2
}else if(条件表达式3){
语句块3
}else{
语句块4
}
- 示例:
if(age>18)
{
console.log("给网卡");
}else if(age>25){
console.log("给名片");
}else if(age>40){
console.log("给房卡");
}else{
console.log("给好人卡");
}
- 特点:
- 这么多大括号中只有一个大括号中的内容会被执行
- 当执行到后面条件的时候证明前面的条件不满足
-
else if
可以只有一个, 也可以有多个, 但是都必须添加在if和else之间
选择结构-if注意点
- 如果只有一条语句时if后面的大括号可以省略
if(age > 18)
console.log("开网卡");
- 注意点:
- 受到if管制的只有紧跟其后的那条语句
- 在企业开发中尽量不要省略大括号
if(false) console.log("语句1"); console.log("语句2"); // 语句2会被输出
- 分号“;”也是一条语句, 空语句
if(10 > 2);
{
console.log("10 > 2");
}
// 输出结果: 10 > 2, if管制的紧跟其后的那个分号
// 如上语句相当于
if(10 > 2)
;
{
console.log("10 > 2");
}
// 如上语句相当于
if(10 > 2) {
;
}
// {}在JS中仅仅代表告诉系统里面的语句是一个整体, 没有别的用途,不会影响代码的执行
{
console.log("10 > 2");
}
- if else是一个整体, else匹配if的时候匹配离它最近的一个if
if(0)
if(1)
console.log("A");
else // 这个else会匹配上面的 if(1)
console.log("B");
else // 这个else会匹配上面的 if(0)
if (1)
console.log("C"); // 最终输出C
else
console.log("D");
- 对于非Boolean类型的值,会先转换为Boolean类型后再判断
if (0) {
console.log("123\n"); // 不会被执行
}
- 判断变量与常量问题
- 但凡遇到比较一个变量等于或者不等于某一个常量的时候,把常量写在前面
// if(a = 0) // 错误写法, 但不会报错 /* 本来是先判断变量a存储的值是否等于0, 但是如果不小心写成a=0,代表把0存储到a中. 为了避免这种问题判断是否相等时把常量写前面, 因为等号左边只能是变量, 所以如果少写一个等号会报错 */ if (0 == a) { console.log("a的值是0\n"); }else{ console.log("a的值不是0\n"); }
- 但凡遇到比较一个变量等于或者不等于某一个常量的时候,把常量写在前面
- if语句可以嵌套使用
var num = 8;
if (num >= 5)
{
if(num <= 10)
{
console.log("一个5~10之间的数")
}
}