zoukankan      html  css  js  c++  java
  • return false break;

    js中的return false;  break;

       var list = [1, 2, 3, 4, 5];
            var list2 = ['a', 'b', 'c', 'd'];
            for (var j = 0; j < list2.length; j++) {
                for (var i = 0; i < list.length; i++) {
                    alert(list[i]);
                    if (list[i] == 3) break;
                }
                alert(list2[j]);
            }
                    alert("ff");   // 1 2 3 a 1 2 3 b 1 2 3 c 1 2 3 d

    由结果可以看出break只能跳出第一个循环

    return false;

    这个的原因是return 只能用在函数内部,不能再全局中使用。

      function a() {
                var list = [1, 2, 3, 4, 5];
                var list2 = ['a', 'b', 'c', 'd'];
                for (var j = 0; j < list2.length; j++) {
                    for (var i = 0; i < list.length; i++) {
                        alert(list[i]);
                        if (list[i] == 3) { return false; }
                    }
                    alert(list2[j]);
                }
                alert("ff");
            }
            a();  //1  2  3

    这个说明 return  false; 把整个函数都停止了

      <script type="text/javascript" >
            function a() {
                var list = [1, 2, 3, 4, 5];
                var list2 = ['a', 'b', 'c', 'd'];
                for (var j = 0; j < list2.length; j++) {
                    for (var i = 0; i < list.length; i++) {
                        alert(list[i]);
                        if (list[i] == 3) { return false; }
                    }
                    alert(list2[j]);
                }
                alert("ff");
            }
            function bb() {
                a();
                alert("ggg");
            }  
    bb();
    //1 2 3 ggg </script>

    return false; 至停止了其本身的函数

      function a() {
                var list = [1, 2, 3, 4, 5];
                var list2 = ['a', 'b', 'c', 'd'];
                for (var j = 0; j < list2.length; j++) {
                    for (var i = 0; i < list.length; i++) {
                        alert(list[i]);
                        if (list[i] == 3) { return false; }
                    }
                    alert(list2[j]);
                }
                alert("ff");
            }
            function bb() {
                a();
                alert("ggg");
            }   //1 2 3
    
            bb();
            alert("dfs");  //1 2 3 ggg dfs

    全局中也只是把自己所在的函数停止了,不管是几层循环

    在jquery中也是这样吗?

    试试!

      <script type="text/javascript" >
            var list = [1, 2, 3, 4, 5];
            var list2 = ['a', 'b', 'c', 'd'];
            $(list).each(function (key, item) {
                $(list2).each(function (key1, item1) {
                    alert(item1);
                    if (item1 == 'b') {
                        return false;
                    }
                });
            });//a b a b a b a b a b
        </script>

    可以看出return false;在全局中使用了,为什么

    jquery 中each代码

        // args is for internal usage only
        each: function( object, callback, args ) {
            var name, i = 0,
                length = object.length,
                isObj = length === undefined || jQuery.isFunction(object);
    
            if ( args ) {
                if ( isObj ) {
                    for ( name in object ) {
                        if ( callback.apply( object[ name ], args ) === false ) {
                            break;
                        }
                    }
                } else {
                    for ( ; i < length; ) {
                        if ( callback.apply( object[ i++ ], args ) === false ) {
                            break;
                        }
                    }
                }
    
            // A special, fast, case for the most common use of each
            } else {
                if ( isObj ) {
                    for ( name in object ) {
                        if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
                            break;
                        }
                    }
                } else {
                    for ( var value = object[0];
                        i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
                }
            }
    
            return object;
        },

     jquery中带args的调用,

    注意:

    由上面的方法可以看出,有args时,是通过apply方式调用的,所有args必须为数组

         var list = [1, 2, 3, 4, 5];
            $.each(list, function (key, item) {
                alert(key + "||" + item);
            },['aaa','bbb','ccc']);

    从each代码中可以看出,为什么可以在全局中使用,

    因为这个时候,return false 其实不在全局中,在callback中,在一个function中,return false 也只是停止了循环中的一个callback

    callback中不能使用break;

    所以在each中return false 来代替break跳出循环;只能跳出一层循环。

    总结:

    在js中break只能跳出一个循环

    return false 可以停止其所在的function,但与其function所并行的操作继续运行。

    在jquery的each中:

    用return false;来跳出一个循环。不能使用break;

    注意:switch中可以使用break;但不可以使用continue;

    例:

    <script type="text/javascript">
            var arr = [1, 2, 3, 4, 5];
            for (var i = 0; i < arr.length; i++) {
                var val = arr[i];
                switch (val) {
                    case 1: if (val == 1) { console.log("a"); continue; } break;
                    case 2: if (val == 1) { console.log("b"); continue; } break;
                    case 3: if (val == 3) { console.log("c"); continue; } break;
                    default: break;
                }
                console.log("switch end" + i);
            }
        </script>

    可以看出在上例中break;是跳出switch

    continue是跳出for循环中的一个循环。

  • 相关阅读:
    边缘节点为什么不能直接通过 kubernetes service 直接访问云端 master 节点中的 API Server
    Leaflet中原生方式实现测距
    http网页是否能引用https资源/调用https接口?https网页是否能引用http资源/调用http接口?
    Vite2 Vue3 SSR
    SQL模糊查询的四种匹配模式
    vue3中ref、reactive、toRef、toRefs区别
    iis在访问vue服务时报错
    vue3中使用elform
    koa2cors实现过程以及应用
    chrome v8的垃圾回收机制和内存泄漏分析
  • 原文地址:https://www.cnblogs.com/hongdada/p/3164367.html
Copyright © 2011-2022 走看看