流程控制:
- 计算机处理代码的执行过程,默认按照自上而下的顺序读取
- 某些情况下,我们是需要更改这些读取顺序。
if判断:
- 格式1:
if(条件) 内容当条件为真时,输出执行的内容 - 格式2:
if(条件){ 当条件为真时,输出执行的内容 }
区别: 不加花括号的只能影响到紧跟在条件后的第一条语句,而加了花括号则可以控制花括号内的所有语句 - 格式3:
if(条件){
条件为真时,执行的代码
}else{
条件为假时,执行的代码
}
如果...否则...
- 格式4:
if(){
//当条件为真时,执行代码否则往下判断
}else if(){
//当else if的条件为真时,执行代码,否则往下判断
}else if(){
//当else if的条件为真时,执行代码,否则往下判断
}else{
//当所有条件都为假,执行代码
};
如果...否则如果...否则如果...否则...
巢状分支:
巢状分支也叫if嵌套,if语句允许在其中继续嵌套if语句或者其他代码
if(){
//外层if循环语句
if(){
//内层嵌套的语句
}
}
注意:if语句的判断条件很灵活,只要是能够输出Boolean的数据都可以当成条件
switch分支语句:
switch(n){
case 1:
执行代码块 1
break;
case 2:
执行代码块 2
break;
default:
n 与 case 1 和 case 2 不同时执行的代码
}
工作原理: 首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。
注意: 就算n与一个case的值匹配成功,也不会停止,而是会继续向下匹配,有时候我们并不需要它再做多余的匹配,所以我们可以用 break 语句来阻止代码继续运行,
break:终止,可以终止代码执行。
三目运算:
说到判断,在js里面还有一个简单的判断方法不得不提,那就是三目运算,又被称为三元运算:
条件? 语句一 : 语句二;
这就是三目运算的结构,先写判断条件,条件后面跟着一个问号,再往后是两个输出语句,用冒号隔开,
如果条件为真,则输出语句一、为假则输出语句二
注意: 三目运算的输出结果会返回给它本身,所以你可以用一个变量来接收这个语句,则可以直接用它来使用输出比如:
//比较两个数的大小并把大的数输出
var i=10,j=20;
//第一种方法:
var max = i>j ? i : j;
console.log(max);
//第二种方法:
console.log(i>j ? i : j;);
三目运算还可以嵌套三目运算,如下例:
//判断三个数谁最大
var i = 10,j = 20,x = 30;
var max = i>j ? i>x ? i : x : j>x ? j : x ;
//是不是看着头晕目眩的?这就是嵌套的一个不好的地方,不容易使人看懂,我们可以修改一下
max = i>j ?(i>x ? i : x) : (j>x ? j : x) ;
//这样看着是不是就好看多了?还可以这样:
max = i>j ?
i>x ? i : x :
j>x ? j : x ;
//js可以忽略掉多余的空格和换行,所以将你的代码写的更整洁漂亮吧
console.log(max);
注意: JS中所有的符号都必须用英文符号,否则会报错,
循环语句:
当我们需要做某些大量的、重复的,或者是重复但是值不同的,这个时候如果使用循环就会很方便了
1、For循环
for (语句 1; 语句 2; 语句 3){
//被执行的代码块
}
语句1:定义循环的变量,在循环(代码块)开始前执行
通常我们会使用语句 1 初始化循环中所用的变量 (var i=0)。
语句2:定义运行循环(代码块)的条件
通常语句 2 用于评估初始变量的条件。
语句3:定义跳出循环的值,在循环(代码块)已被执行之后执行
通常语句 3 会增加初始变量的值,如递增或递减。
for (var i=0; i<5; i++){
alert(i);
}
注意: 三个语句都可以忽略并写在其他地方,但是括号里必须有两个;,如:
var i = 0;
for(;;){
alert(i);
i++;
if(i>=5){
break;
//break,当i>=5时终止循环
}
}
注意: 语句1可以写在for循环外边或里面,但是时变量i改变的语句3必须写在for循环的内部,如果忽略掉语句2,则必须在循环内部设置break来跳出循环,否则for循环会成为死循环,无法停止可能会使浏览器崩溃。
For/In循环:
for/in语句可以循环遍历对象的属性:
var a,b;
var person = {name:"名字",age:18,}
for (a in person){
b =b + a;
}
alert(b);//得到的结果会是:名字18
for/in循环会依次遍历对象中的属性,并将每次得到的属性赋值给a。
什么是对象?这个问题会在后面的笔记中讲到。
While循环和Do/While循环:
while循环:
while循环会在指定条件为真时循环执行代码块
while (条件){
需要执行的代码
}
如:
var i = 1;
while(i<10){
console.log(i);
i++;
}
注意: while循环和for(;;)循环类似,也能够执行相同的任务,所以注意,一定要在循环里设置可以使循环终止的代码,如上面的i++,否则会陷入死循环,可能会导致浏览器崩溃。
do/while循环:
do/while 循环是 while 循环的变体。该循环会在检查条件是否为真之前执行一次代码块,然后如果条件为真的话,就会重复这个循环,所以,do/while循环至少可以执行一次。
do{
需要执行的代码
}while (条件);
var i = 0;
do{
console.log(i);
i++;
}while(i>=5);
do/while循环至少执行一次,上面的代码,至少可以输出一次i,
跳出循环-break和continue语句:
上面已经介绍过break语句,现在我们来好好说一下它、还有一个类似的语句:continue
continue同样具有跳出的意思,但和break不同的是:
- break跳出整个循环,即循环代码执行到break就会中断,不在向下执行,即使下面还有未执行的代码
- continue跳出这一次循环,即循环代码碰到continue就会跳过这一次的循环,但是下面的代码继续执行,如果有的话
我们用下面的代码演示一下:
//使用break来跳出循环
for(var i=0;i<10;i++){
//我们了一个自增的数字,现在让我们用它来输出1、2、3~~9
if(i==3){
break;
}
console.log(i);
};
//使用continue来跳出循环
for(var i=0;i<10;i++){
//我们了一个自增的数字,现在让我们用它来输出1、2、3~~9
if(i==3){
continue;
}
console.log(i);
}
运行一下试试看,可以看到添加break语句的循环输出的是0、1、2,break之后的循环都不在执行
而添加continue语句的循环输出的是0、1、2、4、5、6、7、8、9,只有执行了continue语句的3被跳过
for和whiled的比较:
for:
var i =0;
for(;i<5;){
alert(i);
i++
};
while:
var i = 0;
while(i<5){
alert(i);
i++
};