为了账号安全,请及时绑定邮箱和手机立即绑定

看如下代码,for执行顺序到底是怎么样的,不明白为什么输出的是1,3,5,10.把i++放不同的位置,执行的结果不一样。求哪位大神细讲解下,非常感谢!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>无标题文档</title>

<script type="text/javascript">

cars=["1","2","3","4","5","6","10"];

for (var i=0; i<cars.length; i++)

{

document.write(cars[i] + "<br>");

i++

//以上两行输出1,3,5,10


// document.write(i++)//这里输出0,2,4,6

}</script>

</head>

<body>

</body>

</html>


正在回答

2 回答

for里面的i++在循环体每一次执行之后都会执行一次,这就相当于if条件判断;

var i=0;

if(i<cars[i].length){

    document.write(cars[i]);

    i++;//循环体里面的++

}

i++;//for里面的i++

第二个同理:

var i=0;

if(i<cars[i].length){

    document.write(i++); //循环体里面的++

}

i++;//for里面的i++

依次从上到下执行,这样应该很清楚了吧。

0 回复 有任何疑惑可以回复我~

依次执行,第一次先执行document.write(cars[i] + "<br>");这时因为i=0,所以输出为1,然后你for循环自加了一次,i变成了1,在输出语句后你又自加了一次,i变成了2,所以第二次循环输出的值变成3,后面依次类推,你这for循环实际上每次i自增都是自增两次,所以输出的结果才是这样的

0 回复 有任何疑惑可以回复我~
#1

慕虎9706840

document.write(cars[i++]); 输出的是1,3,5,10 document.write(cars[i=1+1]);输出的是2,4,6,undefined, 这是为什么啊?
2017-03-17 回复 有任何疑惑可以回复我~
#2

Molly喜 回复 慕虎9706840

js代码是从上往下解析的,首先i=0,满足条件执行花括号代码,代码执行完,你添加了i++,i值加一,然后由于for循环的迭代器是每执行完一次自加一次,你的i值又加一,所以i值已经等于3,之后依次类推; 第二种,在执行代码前添加了i=i+1,表示起始值刚刚从i=1往下解析代码的时候,遇到了你添加的i=i+1,i就变成了2。 这样应该理解了吧 纠正上面那位的说法,第一种是先因为你添加的条件加1,然后再因为循环加1,顺序是这样的。
2017-12-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

看如下代码,for执行顺序到底是怎么样的,不明白为什么输出的是1,3,5,10.把i++放不同的位置,执行的结果不一样。求哪位大神细讲解下,非常感谢!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信