js循环判断的方法
- if语句
- if else语句
- if else if else if......
- 三元表达式
- switch
- switch语句和if语句的区别
- for循环
- while循环
- do while循环
- for in
- forEach
- for of
- 性能问题
if语句
条件满足就执行,不满足就不执行
if(条件){
语句
}
if else语句
条件满足,执行语句1,条件不满足,执行语句2
if(条件){
语句1
} else{
语句2
}
if else if else if…
if (条件1) {
语句1
} else{
语句2
} if (条件2) {
语句2
} else{
语句3
}
三元表达式
条件1?语句2:语句3;
如果条件1为true,执行语句2。如果条件1为false,执行语句3。
var num=421;
var num=123?console.log(密码正确) :console.log(密码错误);
//输入num是否为123,如果是,输出密码正确,如果不是,输出密码错误
//输入值为421,显然输出反馈给用户的信息的是密码错误
switch
它用于基于不同的条件来执行不同的代码。当要针对变量设置一系列特定值的选项时,就可以使用 switch
switch(表达式){
case value1:
//表达式等于value1时要执行的代码
break;
case value2:
//表达式等于value2时要执行的代码
break;
default:
// 表达式不等于任何一个value值时要执行的代码
}
switch语句和if语句的区别
switch…case语句通常处理case为比较确定值的情况,而if…else…语句更加灵活,常用于范围判断(大于、等于某个范围)。
switch语句进行条件判断后直接执行到程序的条件语句,而if…else…语句有几种条件,就得判断几次(从上到下依次判断)。
当分支比较少时,if…else…语句的执行效率比switch语句更高。
当分支比较多时,switch语句的执行效率比if…else…语句更高,结构也更清晰。
for循环
for(初始化变量①; 条件表达式②; 操作表达式③ ){
//循环体④
}
初始化变量:其实就是用var声明一个普通的变量,并且这个变量通常是作为计数器使用。
条件表达式:用来决定每一次循环是否继续执行,也就是循环的终止条件。
操作表达式:每次循环最后执行的代码,经常用于更新计数器(递增或递减)。
循环体:一组被重复执行的语句。
执行流程:
- 初始化变量,初始化操作在整个 for 循环只会执行一次。
- 执行条件表达式,如果为 true,则执行循环体语句,否则退出循环,循环结束。
- 执行操作表达式,此时第一轮结束。
- 第二轮开始,直接去执行条件表达式(不再初始化变量),如果为 true,则去执行循环体 语句,否则退出循环。
- 继续执行操作表达式,第二轮结束。… 整体执行顺序为:① ② ④ ③ ② ④ ③ ② ④ ③ … ② 循环结束
while循环
while (条件表达式) {
//循环体代码
}
先执行条件表达式,如果结果为 true,则执行循环体代码;
如果为 false,则退出循环,执行后面代码执行循环体代码
循环体代码执行完毕后,程序会继续判断执行条件表达式。
while语句可以在条件表达式为真的前提下,循环执行指定的一段代码,直到表达式不为真时结束循环。
do while循环
do while 是先执行代码,在进行判断,所以 do while 至少执行一次。
do {
//循环体代码 - 条件表达式为 true 时重复执行循环代码
} while(条件表达式);
for in
常用于遍历对象
不能使用break,continue,return来控制循环
let arr = [{name: '张三'},{name: '李四'}];
for (let i in arr) {
console.log(i); //遍历下标 结果为 0 1
}
forEach
forEach用于遍历数组中的元素,并且会对数组中元素使用callback(),与map(),raduce()不同的是,它总返回一个undefined,并且不可以链式调用。
不能使用break,continue,return来控制循环
let arr = [{name: '张三'},{name: '李四'}];
arr.forEach((item,index)=>{
console.log(index);
})
for of
for—of不能遍历普通对象,因为普通对象没有Symbol.iterator属性,如果一个对象有Symbol.iterator属性,那么就可以使用for—of遍历。
常用于遍历array(数组)map(映射)set(集合)strings(字符串)
可以使用break,continue,return来控制循环
let arr = [{name: '张三'},{name: '李四'}];
for (let i of arr){
console.log(i);
}
性能问题
forEach方法,for in方法,for of方法都来自于for循环。
它们只是底层进行不同的封装,虽然看起来简单,但是性能是没有for循环优秀的。
因为for循环是最底层,最基本,性能最优秀的一种遍历方式。但for循环一旦嵌套,比如冒泡排序,看起来是非常令人头疼的。
包括map()方法,sort()方法,都是针对不同数据类型,为了简单高效解决问题,进行了封装。但性能上说,for循环永远是最优秀的。