04. JS 流程控制语句

一. JS条件

  • if ... else ...

  • switch

二. JS循环

  • for

  • for/in

  • while

  • do/while

三. break、continue语句

null、undefined、0、NaN 和 “” 视为 false,其他值一概视为 true。

一. JS条件

  • if - 只有当指定条件为 true 时,使用该语句来执行代码

  • if...else - 当条件为 true 时执行代码,当条件为 false 时执行其他代码

  • if...else if....else - 使用该语句来选择多个代码块之一来执行

if(条件1){  // JS 会自动将条件表达式转换为布尔值 
    执行语句1
}else if(条件2){
    执行语句2
}else{
    执行语句3
}
// 条件1 和 条件2 不能有交集。
  • switch - 使用该语句来选择多个代码块之一来执行

  • 当有很多种选项等于…的时候,switchif else使用更方便:

switch(n)
{
    case 1: 
        执行代码块 1
        break;
    case 2:
        执行代码块 2
        break;
    default:case 1case 2 不同时执行的代码
}
// switch 语句再比较值时使用的时全等操作符,因此不会发生类型转换。

二. JS循环

  • for - 循环代码块一定的次数

  • for/in - 循环遍历对象的属性

  • while - 当指定的条件为 true 时循环指定的代码块

  • do/while - 同样当指定的条件为 true 时循环指定的代码块

1. for循环

循环结构的执行步骤: 

 1、声明循环变量;
 2、判断循环条件;
 3、执行循环体操作;
 4、更新循环变量;
 5、然后循环执行2-4,直到条件不成立,跳出循环。

// 10的阶乘

var x = 1;
for(var i = 1; i <= 10; i++){
	x *= i;
}
console.log(x);
//3628800

if(x===3628800){
	console.log('1 * 2 * 3 * .... *10 = ' + x);
}else{
	console.log("计算错误");
}
//1 * 2 * 3 * .... *10 = 3628800

2. for/in循环 : 循环遍历对象的每个属性

  • for-in语句是一种精准的迭代语句,可以用来枚举对象的属性

  • 语法:for (property in expression) statement

  • JS 对象的属性没有顺序。因此,通过for-in循环输出的属性名的顺序是不可预测的。顺序差别因浏览器而异

  • 如果表示要迭代的对象的变量值为nullundefinedfor-in语句会抛出错误。ECMAScript5 对这种情况不抛出错误,而是不执行循环体。

  • 为了保证最大限度的兼容性,建议在使用for-in循环之前,先确认该对象的值不是nullundefined

var o ={
	name:'Jack',
	age: 20,
	city: 'Beijing'
};
for(var key in o){
	console.log(key);
}   // 'name','age','city'

// 使用for-in循环o对象的所有属性。
// 每次执行循环时,都会将o对象中存在的一个属性名赋值给变量key
// 这个过程会一直持续到对象中的所有属性都枚举一遍为止
  • 由于 Array 也是对象,而它的每个元素的索引被视为对象的属性,因此,for ... in循环可以直接循环出 Array 的索引:
var a = ['A','B','C'];
for(var i in a){
	console.log(i);
	//'0','1','2'
	console.log(a[i]);
	//'A','B','C'
}
  • for … in 对 Array 的循环得到的是 String 而不是 Number

3. while循环

  • while语句属于前测试循环语句

  • 在循环体内的代码被执行之前,就会对出口条件求值

  • while循环只有一个判断条件,条件满足,就不断循环,条件不满足时则退出循环

  • 循环体内的代码有可能永远不会被执行

  • 语法:while (expression) statement

  • for 循环在已知循环的初始和结束条件时非常有用。而忽略了条件的for循环容易让人看不清循环的逻辑,此时用while循环更佳。
// 计算100以内所有奇数之和,可以用while循环实现

var x =0;
var n =99;
while(n>0){
	x = x+n;
	n = n-2;
}
x;
//2500
//在循环内部变量n不断自减,直到变为-1时,不再满足while条件,循环退出

4. Do…while循环 (没什么用)

  • do-while语句是一种后测试循环语句,即只有在循环体中的代码块执行之后,才会测试出口条件

  • 在对条件表达式求值之前,循环体内的代码至少会被执行一次

  • 先执行代码,后判断条件,如果条件为真,继续循环。

num= 1;
do
{
 console.log("数值为:" +  num);
 num++; //更新条件
}
while (num<=5)
//数值为:1
//数值为:2
//数值为:3
//数值为:4
//数值为:5

  • 用do { … } while()循环要小心,循环体会至少执行1次,而for和while循环则可能一次都不执行。

三. break、continue语句

  • breakcontinue 语句用于在循环中精确地控制代码的执行

  • break语句会立即退出循环,作用是跳出代码块, 所以 break 可以使用于循环和 switch 等

  • continue 的作用是进入下一个迭代, 所以 continue 只能用于循环的代码块

  • breakcontinue语句都可以与 label 语句联合使用,从而返回代码中特定的位置。这种联合使用的情况多发生在循环嵌套额情况下

  • 虽然连用breakcontinue和 label 语句能执行复杂的操作,但如果不使用过度,也会有问题

  • 建议如果使用 label 语句,一定要使用描述性的标签,同时不要嵌套过多的循环

for(var i = 0; i < 100; i++){
    if(i % 7 == 0 || i % 10 == 7){
        continue;   // 终止本次循环,进入下一个循环
    }
    console.log(i);
}

// i = 0;符合 if 判断条件,进入 if 执行 continue 终止本次循环,它就不会再往下进行,直接进入下一个循环 
// i = 1;不符合 if 判断条件,直接跳过 if 执行 console.log(i)。

四. 其它

  • label语句

    • 使用 label 语句可以在代码中添加标签,以便将来使用

    • 语法:label: statement

start: for(var i=0;i<count;i++){
	alert(i);
}
//例子中定义的start标签可以在将来由break或continue语句引用。加标签的语句一般都要与for语句等循环语句配合使用

  • with语句

    • with 语句的作用是将代码的作用域设置到一个特定的对象中

    • 语法:with (expression) statement

    • 定义 with 语句的目的主要是为了简化多次编写同一个对象的工作

    • 严格模式下不循序使用 with 语句,否则将视为语法错误

var qs=location.search.substring(1);
var hostNmae=location.hostname;
var url=location.href;

with(location){ 
    var qs=search.substring(1); 
    var hostNmae=hostname; 
    var url=href; 
} 
//使用with语句关联了location对象。在with语句的代码块内部,每个变量首先被认为是一个局部变量,如果在局部变量的内部找不到该变量的定义,就会查询location对象中是否有同名的属性。如果发现了同名的属性,则以location对象属性的值作为变量的值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值