JavaScript|JavaScript-while循环的执行问题


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循环的执行问题】本文用来记录自己的错误,希望对有相同经历的同学有帮助,本人知识尚浅不喜轻喷谢谢!

    推荐阅读