JavaScript中的9种控制流语句

  ECMA-262规定了一组语句(也成为流控制语句)。这些语句定义了 ECMAScript 中的重要语法,有 if 语句、do-while 语句、while 语句、for 语句、for-in 语句、label 语句、break 和 continue 语句、with 语句、switch 语句共9种。

一、 if 语句

  以下是 if 语句的语法:

if (condition) statement1 else statement2

  其中的 condition(条件) 是判断条件,可以是任意的表达式;不一定非得是布尔值,ECMAScript 会自动调用 Boolean() 转换函数将这个表达式的结果转换为一个布尔值。如果 condition 结果为 true,则执行 statement1 语句,否则执行 statement2 语句。业界推崇两个执行语句使用代码块(以一对花括号括起来的多行代码)。

  示例:

if(i>25){alert("Greater than 25.");
}else{alert("Less than or equal to 25.");
}

  还有多重 if 语句判断的语法:

if (condition1) statement1 else if (condition2) statement2 else statement3

二、 do-while 语句

  do-while 语句是一种后测试循环语句,即在循环体中的代码执行之后再测试出口条件。循环体内的代码至少会被执行一次。以下是 do-while 语句语法:

do{statement;
} while(expression);

  示例:

var i = 0;
do{i += 2;
}while(i<10);
alert(i);

三、 while 语句

  while 语句也属于前测试循环语句,即循环体内的代码在执行前就会对出口条件进行求值判断。因此,循环体内的代码可能永远不会被执行。以下是 while 语句语法:

while(expression) statement;

  示例:

var i = 0;
while(i<10){i += 2;
}

四、 for 语句

  for 语句是一种前测试循环语句,但它具有在执行循环之前初始化变量和定义循环后要执行的代码的能力。以下是 for 语句语法:

for(initialization; expression; post-loop-expression) statement;

  示例:

var count = 10;
for (var i = 0; i < count; i++){alert(i)
}

  注意:在循环体内定义的变量等价于在循环体外定义一样,循环体中不存在块级作用域,因此在循环内部定义的变量在外部也可以访问到。

  例如:

<script>var i = 10;for(var m = 0;m<10;m++){var j = 0;j++;}console.log(j);        // 1for(var i = 0;i<5;i++){document.write(i);}console.log(i);     // 5
</script>

五、 for-in 语句

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

for(property in expression) statement;

  示例:打印出 window 对象的所有属性。

<script>for(var propName in window){document.write(propName);document.write('<br>');}
</script>

  打印出的属性顺序是不可预测的,因浏览器而已。

六、 label 语句

  使用 label 语句可以在代码中添加标签,以便将来结合 break 和 continue 使用,加标签的语句一般都要与 for 等循环语句配合使用。语法如下:

label:statement

  示例:

<script>// 无label语句,break语句只挑出当前循环层。var num = 0;for (var i = 0 ; i < 10 ; i++){for (var j = 0 ; j < 10 ; j++){if( i == 5 && j == 5 ){break;}num++;}}alert(num);     // 95// 有label语句,break语句后接标签后跳出到标签处继续循环。num = 0;outPoint:for (var i = 0 ; i < 10 ; i++){for (var j = 0 ; j < 10 ; j++){if( i == 5 && j == 5 ){break outPoint;}num++;}}alert(num);         // 55
</script>

七、 break 和 continue 语句

  break 语句和 continue 语句用于在循环中精确的控制代码的执行。其中break 语句是会立即退出当层循环,强制执行当层循环后的语句。而 continue 也是立即退出当前层的循环,但退出循环后从当前层循环的顶部继续执行。

八、 with 语句

  with 语句的作用是将代码的作用域设置到一个特定的对象中。with 语句的语法如下:

with(expression) statement

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

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

  上面的代码中都包含 location 对象,就可以使用 with 语句,改写成如下:

with(location){var qs = search.substring(1);var hostName = hostname;var url = href;
}

  上述代码使用 with 语句关联了 location 对象。这意味着在 with 语句的代码块中,每个变量被认为是一个局部变量,如果在局部环境中找不到该变量的定义,就会查询 location 对象中是否有同名的属性。

  注意:严格模式下不允许使用 with 语句。大型开发中不建议使用。

九、 switch 语句

  switch 语句是多重判断语句,与 if 语句最为密切。语法与 C 语言语法非常接近,如下所示:

switch(expression){case value:statementbreak;case value:statementbreak;case value:statementbreak;default:statement
}

  switch 语句中的每一种情形(case)的含义是:如果表达式(expression)等于这个值(value),则执行后面的语句(statement)。break 关键字会导致代码跳出 switch 语句。没有 break 关键字会一个接着一个执行后面的 case。如果表达式没有匹配到任何一种case,则会执行 default 后面的语句。

JavaScript中的9种控制流语句相关推荐

  1. JavaScript中的几种继承方式及优缺点,你知道多少呢?

    原文连接:JavaScript中的几种继承方式及优缺点,你知道多少呢? 继承也是前端里面的重要的一个知识点,在实际工作中或者面试中也会经常的遇到,那么通过这篇文章我们详细的了解一下继承的几种方式以及各 ...

  2. JavaScript中的几种计时操作

    系列文章目录 例如:第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录 前言 一.JavaScript中的两种常用计时函数 二.详细代码 1.一次性计时器setTimeou ...

  3. python选择语句是什么语句_Python语言中的三种选择语句

    本文将详细介绍Python语言中的三种选择语句:if语句,if/else语句和if/elif/else语句.对于每种语句,我们都提供了相应的流程图.与此同时,我们给出许多简单的示例程序,以帮助读者加深 ...

  4. VBA中的10种循环语句

    VBA中的10种循环语句 1.For – Next '循环数组 ArraySum = 0 For i = 1 To 10 ArraySum = ArraySum + MyArray(i) Next i ...

  5. 必看干货:如何在 JavaScript 中实现 8 种基本图形算法

    在本文中,我将实现8 种图算法,探索 JavaScript 中图的搜索和组合问题(图遍历.最短路径和匹配). 这些问题是从<Java编程面试要素>一书中借来的.本书中的解决方案是用 Jav ...

  6. html dom节点类型,浅谈Javascript中的12种DOM节点类型

    前言 DOM的作用是将网页转为一个javascript对象,从而可以使用javascript对网页进行各种操作(比如增删内容).浏览器会根据DOM模型,将HTML文档解析成一系列的节点,再由这些节点组 ...

  7. Javascript中的8种常见数据结构(建议收藏)

    1.Stack(栈) 堆栈遵循LIFO(后进先出)的原则.如果你把书堆叠起来,上面的书会比下面的书先拿.或者当你在网上浏览时,后退按钮会引导你到最近浏览的页面. Stack具有以下常见方法: push ...

  8. JavaScript中的几种继承方式及优缺点分析

    众所周知,继承是面向对象编程思想中的三大特点(封装,继承,多态)之一. 所谓继承,通俗来讲就是子类自动拥有父类的属性和方法, 继承可以提高代码的复用性. 继承也是前端里面的重要的一个知识点,在实际工作 ...

  9. JavaScript中的If和Else语句(香草)

    Generally if statements have the following syntax: 通常, if语句具有以下语法: if(condition){ Our code; } The co ...

最新文章

  1. 使用idea 在springboot添加本地jar包的方法 部署的时候本地jar没有包含的解决方法
  2. First Week :Linux系统学习
  3. leetcode two sum python_LeetCode专题-Python实现之第1题:Two Sum
  4. Phonegap win7下环境配置流程
  5. HDU - 1584 蜘蛛牌(dfs+最优性剪枝)
  6. 分布式和微服务的区别
  7. ubuntu14.04下 安装matlabR2015b遇到的一些问题及其解决方法
  8. 人机交互界面设计大作业_为什么说大多数UI设计、大数据、人工智能等培训班不靠谱?...
  9. python爬虫的时候要用的url修改方法总结
  10. 安装完centos6没有eth0,只有回环地址
  11. Centos 6 搭建安装 Gitlab
  12. 分布式缓存MemcacheHelper
  13. Spring之Bean的作用域、使用外部属性文件、mchange-commons-java-0.2.11.jar下载
  14. vue移动端实现电子签名画板
  15. 机械制图之工程图线型
  16. 一级指针, 二级指针
  17. 华为鸿蒙内存机制,华为鸿蒙系统对内存有要求吗?
  18. 一个性能优化实操案例
  19. 计算机要执行一条指令,cpu所涉及的操作应该包括下列的,计算机应用基础学习指导...
  20. 关于工业线阵相机的一些知识

热门文章

  1. SQLZOO JOIN答案
  2. 文献解读|气管抽吸物RNA测序可识别COVID-19 ARDS的不同免疫学特征
  3. Banana Pi BPI-R64 开源路由器 MTK MT7622 64位芯片方案设计,智能路由开发板
  4. 跨域与jsonp及cors解决
  5. (PC+WAP)带手机端pbootcms模板五金机电类网站
  6. IDEA:如何创建 Android 项目
  7. f5负载均衡导致服务器响应,什么是F5负载均衡器,看完你就明白怎么回事了
  8. 一指禅app卸载,卡在设备管理激活
  9. #StringBuilder中的append方法 @FDDLC
  10. 考试题目“笨笨的西瓜种植”