Do...while和while...do的区别在于对于临界值的测试上。当在执行的时候只选择临界值来测试时,你会发现do...while至少要执行一次,而while...do则一次都不会执行。但是,当不去考虑临界值的时候,do...while和while...do的执行结果是一样的。让我们用事实来说话吧:

只测试临界值:

 <!DOCTYPE html>
<html>
<body>
<p>Try to practice while statement!</p>
<p id = "demo"></p>
<script>
var x = "";
var i = 0;
var x = "";
var i = 0;
while(i < 0)
{
x += "The number is " + i + "." + "<br>";
i ++;
document.getElementById("demo").innerHTML = x;
} do
{
x +="The number is " + i + "." + "<br>";
i++;
document.getElementById("demo").innerHTML = x;
}
while(i < 0);
</script>
</body>
</html>

尝试着只去测试临界值(i=0)时,你会发现只有do...while会输出,而while...do会在判断时直接不符合条件,这似乎很简单的逻辑,但有时候,也会让死钻牛角尖的我陷入混乱的状态。

不考虑临界值时只执行while语句:

 <!DOCTYPE html>
<html>
<body>
<p>Try to practice while statement!</p>
<p id = "demo"></p>
<script>
var x = "";
var i = 0;
while(i < 5)
{
x += "The number is " + i + "." + "<br>";
i ++;
document.getElementById("demo").innerHTML = x;
}
</script>
</body>
</html>

不考虑临界值时只执行do...while语句:

 <!DOCTYPE html>
<html>
<body>
<p>Try to practice do while statement!</p>
<p id = "demo"></p>
<script>
var x = "";
var i = 0;
do
{
x +="The number is " + i + "." + "<br>";
i++;
document.getElementById("demo").innerHTML = x;
}
while(i < 5);
</script>
</body>
</html>

你会发现此时他们的执行结果是一样的。所以在使用的时候不用再纠结是选哪种循环来执行。

说明:我目前所学习的所有例子都是来自于 http://www.w3schools.com.

JavaScript中思考do...while 和 while语句的区别的更多相关文章

  1. JavaScript 中定义变量时有无var声明的区别

    关于JavaScript中定义变量时有无var声明的区别 var a=5; //正确 a=5; //正确 在javascript中,以上两种方法都是定义变量的正确方法.微软的Script56.CHM中 ...

  2. JavaScript中querySelector()和getElementById()(getXXXByXX)的区别

    在日常开发中,使用JavaScript获取元素的时候,最常用的方法就是document.getElementById(getXXXByXX)方法.但是最近发现有很多地方使用的是querySelecto ...

  3. javaScript中的return,break,continue的区别

    导语: javaScript中有三种方法可以跳出循环或者终止循环.分别为break.return.continue. 正文: 一.break break 会使得整个程序终止执行或者包含了最内层的循环或 ...

  4. JavaScript中instanceof与typeof运算符的用法及区别详细解析

    JavaScript中的instanceof和typeof常被用来判断一个变量是什么类型的(实例),但它们的使用还是有区别的: typeof 运算符 返回一个用来表示表达式的数据类型的字符串. typ ...

  5. JavaScript中的三种弹出框的区别与使用

    JavaScript中有三种原生的弹出框,分别是alert.confirm.prompt.分别表示弹出框.确认框.信息框. 以下是示例代码: <!DOCTYPE html> <htm ...

  6. javascript中的this在不同场景下的区别

    javascript在初版的设计上存在失误,导致了这门语言在使用时,经验型写法并不能得到像其它几个流行语言一样预期.其中的this的使用就是一个典型. this在javascript中是由解释器注入的 ...

  7. javascript中break,continue和return语句用法小结:

    Break语句会使程序立刻退出包含在最底层的循环或者退出一个switch语句,它是用来退出循环或者switch语句. 例如: <script type="text/javascript ...

  8. JavaScript 中 申明变量的方式--let 语句

    let 语句 - 声明一个块范围变量. 语法 let 变量名 = 初始化值; 例子 "use strict"; let name = '赵敏'; (function opt(){ ...

  9. 在JavaScript中,++在前和++在后有什么区别

    一.++可以与输出语句写在一起,++写在变量前和写在变量后不是一个意思++ i 和 i ++ 区别在于运算顺序和结合方向. 在JavaScript中有两种自加运算,其运算符均为 ++,功能为将运算符自 ...

随机推荐

  1. Eclipse 调试

    F6:(Step Over)单步执行每一行程序: F8:(Resume)继续执行该程序直到下一个断点或程序结束: F5: (Step Into)跳入一个方法内部: F7:(Step Return)从当 ...

  2. .net core Fundamentals

    • Application Startup 應用程序啟動 • Middleware 中間件 • Working with Static Files 靜態文件 • Routing 路由 • URL Re ...

  3. Flask从入门到放弃1:路由app.route()

    Flask从入门到放弃1: Flask中的路由app.route(): 参考来源:http://python.jobbole.com/80956/ https://www.raspberrypi.or ...

  4. Chrome 扩展开发资料

    中文文档(翻译自官方文档):https://crxdoc-zh.appspot.com/apps/tut_debugging 官方英文: https://developer.chrome.com/ex ...

  5. [BZOJ2946][Poi2000]公共串解题报告|后缀自动机

    鉴于SAM要简洁一些...于是又写了一遍这题... 不过很好呢又学到了一些新的东西... 这里是用SA做这道题的方法 首先还是和两个字符串的一样,为第一个字符串建SAM 然后每一个字符串再在这个SAM ...

  6. C#编写程序监测某个文件夹内是否有文件进行了增,删,改的动作?

    新建一个Console应用程序,项目名称为“FileSystemWatcher”,Copy代码进,编译后就可以用了.代码如下: using System; using System.Collectio ...

  7. kolakoski序列

                   搜狐笔试=.= 当时少想一个slow的指针..呜呜呜哇的一声哭出来 function kolakoski(token0, token1) { token0 = token ...

  8. new操作符(翻译自mozilla.org)

    翻译自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new new操作符可以实例化一个用户自 ...

  9. 3.0docker操作

    登录镜像资源 docker login daocloud.io username: password: docker login : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方 ...

  10. Python 16进制与字符串的转换

    电脑上装了Python2.7和3.3两个版本,平时运行程序包括在Eclipse里面调试都会使用2.7,但是由于某些原因在cmd命令行中输入python得到的解释器则是3.3, 一直没对此做处理,因为这 ...