《JavaScript高级程序设计》(第4版)阅读笔记(十七)

这一篇博文继续分享《高程四》第三章的内容,估计第三章快要结束了。

 

3.6.2 do-while 语句
 

do-while 语句是一种后测试循环语句,即循环体中的代码执行后才会对退出条件进行求值。换句话说,循环体内的代码至少执行一次

do-while 的语法如下:

do {
  statement
} while (expression);

注意 后测试循环经常用于这种情形:循环体内代码在退出前至少要执行一次。

 

3.6.3 while 语句

 

while 语句是一种先测试循环语句,即先检测退出条件,再执行循环体内的代码。因此, while 循环体内的代码有可能不会执行。下面是 while 循环的语法:

while(expression) statement

 

3.6.4 for 语句
 

for 语句也是先测试语句,只不过增加了进入循环之前的初始化代码,以及循环执行后要执行的表达式,语法如下

for (initialization; expression; post-loopexpression)
 statement

循环体也可能不会被执行。如果循环体被执行了,则循环后表达式也会执行,以便递增循环变量。

无法通过 while 循环实现的逻辑,同样也无法使用 for 循环实现。因此 for 循环只是将循环相关的代码封装在了一起而已

在 for 循环的初始化代码中,其实是可以不使用变量声明关键字的。(也就是for(let i = 0; i < 10; i ++) 也可以写成for(i = 0; i < 10; i ++))不过,初始化定义的迭代器变量在循环执行完成后几乎不可能再用到了。因此,最清晰的写法是使用 let 声明迭代器变量,这样就可以将这个变量的作用域限定在循环中

初始化、条件表达式和循环后表达式都不是必需的。因此,下面这种写法可以创建一个无穷循环

for (;;) { // 无穷循环
 doSomething();
}

如果只包含条件表达式,那么 for 循环实际上就变成了 while循环

let count = 10;
let i = 0;
for (; i < count; ) {
  console.log(i);
  i++;
}

 

3.6.5 for-in 语句
 

for-in 语句是一种严格的迭代语句,用于枚举对象中的非符号键属性,语法如下:

for (property in expression) statement

下面是一个例子:

for (const propName in window) {
 document.write(propName);
}

这个例子使用 for-in 循环显示了BOM对象 window 的所有属性。每次执行循环,都会给变量 propName 赋予一个 window 对象的属性作为值,直到 window 的所有属性都被枚举一遍。与 for 循环一样,这里控制语句中的 const 也不是必需的。但为了确保这个局部变量不被修改,推荐使用 const 。

ECMAScript中对象的属性是无序的,因此 for-in 语句不能保证返回对象属性的顺序。换句话说,所有可枚举的属性都会返回一次,但返回的顺序可能会因浏览器而异
如果 for-in 循环要迭代的变量是 null 或 undefined ,则不执行循环体。

 

3.6.6 for-of 语句

 

for-of 语句是一种严格的迭代语句,用于遍历可迭代对象的元素,语法如下:

for (property of expression) statement

下面是示例:

for (const el of [2,4,6,8]) {
  document.write(el);
}

在这个例子中,我们使用 for-of 语句显示了一个包含4个元素的数组中的所有元素。循环会一直持续到将所有元素都迭代完。与for 循环一样,这里控制语句中的 const 也不是必需的。但为了确保这个局部变量不被修改,推荐使用 const 。

for-of 循环会按照可迭代对象的 next() 方法产生值的顺序迭代元素。(并不是所有的对象都可以使用for of循环遍历)如果尝试迭代的变量不支持迭代,则 for-of 语句会抛出错误。

 

3.6.7 标签语句

 

标签语句用于给语句加标签,语法如下:
 

label: statement

下面是一个例子:

start: for (let i = 0; i < count; i++) {
  console.log(i);
}

在这个例子中, start 是一个标签可以在后面通过 break或 continue 语句引用。标签语句的典型应用场景是嵌套循环。(本来用break只能跳出内层循环,如果需要跳出外层循环,可以在外层循环前面加上标签名,然后“break 标签名”, 跳出外层循环)
 












 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值