关于终止for循环的问题?

<button onclick="city()">点击</button>
<script type="text/javascript">
    var cityname = '北京1'
    function city(){                
        let aCity = ['北京', '天津', '河北', '山西', '内蒙古', '辽宁', '吉林', '黑龙江', '上海', '江苏', '浙江', '安徽', '福建', '江西', '山东', '河南', '湖北', '湖南', '广东', '广西', '海南', '重庆', '四川', '贵州', '云南', '西藏', '陕西', '甘肃', '青海', '宁夏', '新疆', '台湾', '香港', '澳门', '国外'];
        for(var i = 0; i < aCity.length; i++) {
            if(cityname !== aCity[i]) {
                console.log(1);
                return false;
            }else{
                console.log(2);
            }
        };
        console.log(3);
    }            
</script>

以上是我的代码,问:
1.当 cityname='北京' 时,打印结果是2、1,请问为什么还会走到1;
2.为何无论 cityname='北京' 或 cityname='北京1' 都无法出发 console.log(3);

阅读 2.9k
4 个回答
  1. 因为第一次循环 北京 === 北京 所以打印 2,然后for循环会继续执行,i++,到了第二个 北京 !== 天津,所以打印了 1。与此同时for循环终止了,函数被return,所以打印不了3。
  2. 使用 break 替换 return,可以跳出 for 循环而又不终止函数。
 function city(){                
    let aCity = ['北京', '天津', '河北', '山西', '内蒙古', '辽宁', '吉林', '黑龙江', '上海', '江苏', '浙江', '安徽', '福建', '江西', '山东', '河南', '湖北', '湖南', '广东', '广西', '海南', '重庆', '四川', '贵州', '云南', '西藏', '陕西', '甘肃', '青海', '宁夏', '新疆', '台湾', '香港', '澳门', '国外'];
    for(var i = 0; i < aCity.length; i++) {
        if(cityname !== aCity[i]) {
            console.log(1);
            break;
        }else{
            console.log(2);
            break;
        }
    };
    console.log(3);
} 

可以百度一下 break 和 return

你在console.log(1);后面加了return false;自然就会跳出循环,并且console.log(3)也不会执行

首先city是函数
i从0开始, aCity[0] 是北京, aCity[1]是天津,cityname为北京时, 先出2没return再循环出1 return, 有什么问题?
第二点是因为你判断不等时函数就return了,走不到3.

return false;是退出当前函数city(),所以执行到return false时直接退出了当前函数,自然不会执行console.log(3),false作为函数city的返回值。如果只想退出当前for循环,将return false换成break即可。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题