function f() { for(i = 0;i < 2;i ++) { alert(i); testIndex(); alert(i); } } function testIndex() { for(i = 0;i < 2;i ++) {} } 弹出: 0 2 也就是说内部调用的testIndex改变了外部函数的循环数。 按如下方式则不会产生此类问题: for(var i = 0;i < nodes1.length;i++) {} 平时写脚本时应注意. ps:JS没认真学,最近将之前做的选择器优化用户体验.自己写js,碰到几个这种搞死人的问题。找原因找了半天。