美文网首页
今日改缺陷所得 for、break、label

今日改缺陷所得 for、break、label

作者: _信仰zmh | 来源:发表于2018-06-27 17:58 被阅读16次

1. 首先是break、continue、return区别

  • break: 退出当前循环体,执行循环体后面的语句。
  • continue:退出本次循环,回到循环体顶部,开始新的循环(继续执行循环体)。
  • return: 我一般不在for循环中使用return。函数中使用,直接退出该函数,执行该函数后面的语句。return之后的语句都不会被执行

2. 多层循环嵌套下使用break

因为break 只是退出当前循环体,如果有多层for循环嵌套,那么内层的break之后,不会阻止外层循环的继续执行

// 外层for
for(.., .., ..){
   // 内层for
   for(.., .., ..){
        break;   // 这里的break只能退出内层的for,但是外层的for还会继续执行,不是我想要的
  }
}

比较笨的方法是在外层加个判断条件,符合就退出外层循环。

 $("#addPerson2").click(function(){
    var ifAdd = true;
// 只要某一行的某一列为空,就不在继续向下循环判断剩下的项是否为空
    for(var i = 0; i < vm.addPersonData.length; i++){
        for(var j = 0; j < vm.indexCloumnsArr.length; j++){
                if(vm.addPersonData[i]["p"+j]==''){
                    ifAdd = false;
                   // 退出内层循环                   
                    break;
                }else{
                    ifAdd = true;
                }
        }
// 退出外层循环
        if(!ifAdd){
             break;
       }
   }

    if(ifAdd){
        var addObj = {};
        addObj.id = vm.addPersonData.length;
        for(var j = 0; j < vm.indexCloumnsArr.length; j++){
            addObj["p"+j] = "";
        }
        vm.addPersonData.push(addObj);
        $("#grid").data("kendoGrid").dataSource.read();
    }else{
        toaster.error({title: "提示" , body: "列表中含有未填项,请填写正确后添加新纪录。"});
    }
});

3. 了解一下label语句,适用于break退出指定循环体

语法 和使用示例:

label(名称,相当于个标记,便于引用): statement(for语句循环体)


相关文章

网友评论

      本文标题:今日改缺陷所得 for、break、label

      本文链接:https://www.haomeiwen.com/subject/zvliyftx.html