while循环执行顺序的不同导致的输出问题
若在1号代码中显示页面依次输入1000,退出时
输出结果为:1000,退出
长度为:2
1.
var arr =[];
var wage=0;
while(wage!="退出"){
wage=prompt("请输入工资");
arr[arr.length]=wage;
}document.write(arr+"
");
document.write(arr.length);
若在2号代码中显示页面依次输入1000,退出时
输出结果为:1000
长度为:1
2.
var arr =new Array();
j=prompt("请输入工资");
while(j!="退出"){
arr[arr.length]=j;
j=prompt("请输入工资");
}
document.write(arr);
document.write(arr.length);
由于刚学JS然后当时脑子没转过来,就在想为什么两个相似代码之间的输出序列不同,而且长度也不同?
下面让我们梳理一下1号代码的执行步骤
咱从头看代码,
1、首先定义了一个空数组,用来存放用户输入的内容;
2、第二行定义了一个初始的工资wage=0,并不是用户输入的;
3、第3行用初始的wage=0与“退出”判断,不相等,所以while循环条件满足,进入循环体内;
4、第4行会弹出输入框,让用户输入,加入我这时输入了1000;
5、执行到第5行,就变成了arr[0]=1000;
6、再次判断while循环的条件,wage=1000,不等于“退出”,所以满足条件进入循环体内:
7、执行第4行,弹出输入框,加入我输入了“退出”:
8、再执行第5行,将wage=“退出”赋值给数组arr,即arr[1]=“退出”,此时数组arr=[1000,“退出”];
9、再判断while中的条件,wage=“退出”不满足条件,那么退出循环,执行document.write(arr),即打印了[1000,“退出”]。
下面让我们梳理一下2号代码的执行步骤
咱从头看代码,
1、首先定义了一个数组对象,用来存放用户输入的内容;
2、第2行弹出输入框,让用户输入工资
3、第3行用户输入1000与“退出”判断,不相等,所以while循环条件满足,进入循环体内;
4、执行到第4行,就变成了arr[0]=1000;
5、执行到第5行弹出输入框,让用户输入工资,输入了“退出”。
6、再次判断while循环的条件,wage=“退出”不满足条件所以满足条件不进入循环体内,document.write(arr),即打印了[1000]。
总结:可以看出区别是1号代码轮到输入退出时,它依旧还在上一步的函数体中执行并赋值到数组arr[1]中,然后才进入while条件判断wage=“退出”不满足条件,然后不符合条件退出循环,而2号代码是当前输入直接判断若不符合即退出循环,这就是两者之间细微的不同却导致的输出不同。
【JavaScript|JavaScript-while循环的执行问题】本文用来记录自己的错误,希望对有相同经历的同学有帮助,本人知识尚浅不喜轻喷谢谢!
推荐阅读
- 操作系统|[译]从内部了解现代浏览器(1)
- web网页模板|如此优秀的JS轮播图,写完老师都沉默了
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- vue.js|vue中使用axios封装成request使用
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- JavaScript|JavaScript — 初识数组、数组字面量和方法、forEach、数组的遍历
- JavaScript|JavaScript — call()和apply()、Date对象、Math、包装类、字符串的方法
- JavaScript|JavaScript之DOM增删改查(重点)
- javascript|vue使用js-xlsx导出excel,可修改格子样式,例如背景颜色、字体大小、列宽等
- javascript|javascript中的数据类型转换