JavaScript-while循环的执行问题

while循环执行顺序的不同导致的输出问题


若在1号代码中显示页面依次输入1000,退出时
输出结果为:1000,退出
长度为:2

1.
var arr =[];
var wage=0;
while(wage!="退出"){
	wage=prompt("请输入工资");
	arr[arr.length]=wage;
  }

document.write(arr+"<br/>");
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号代码是当前输入直接判断若不符合即退出循环,这就是两者之间细微的不同却导致的输出不同。

本文用来记录自己的错误,希望对有相同经历的同学有帮助,本人知识尚浅不喜轻喷谢谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值