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

2018-06-27  本文已影响16人  _信仰zmh

1. 首先是break、continue、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语句循环体)


上一篇 下一篇

猜你喜欢

热点阅读