js中的return false;  break;

   var list = [, , , , ];
var list2 = ['a', 'b', 'c', 'd'];
for (var j = ; j < list2.length; j++) {
for (var i = ; i < list.length; i++) {
alert(list[i]);
if (list[i] == ) 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 = [, , , , ];
var list2 = ['a', 'b', 'c', 'd'];
for (var j = ; j < list2.length; j++) {
for (var i = ; i < list.length; i++) {
alert(list[i]);
if (list[i] == ) { return false; }
}
alert(list2[j]);
}
alert("ff");
}
a(); //1 2 3

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

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

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

  function a() {
var list = [, , , , ];
var list2 = ['a', 'b', 'c', 'd'];
for (var j = ; j < list2.length; j++) {
for (var i = ; i < list.length; i++) {
alert(list[i]);
if (list[i] == ) { 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 = [, , , , ];
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 = ,
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[];
i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
}
} return object;
},

jquery中带args的调用,

注意:

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

     var list = [, , , , ];
$.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 = [, , , , ];
for (var i = ; i < arr.length; i++) {
var val = arr[i];
switch (val) {
case : if (val == ) { console.log("a"); continue; } break;
case : if (val == ) { console.log("b"); continue; } break;
case : if (val == ) { console.log("c"); continue; } break;
default: break;
}
console.log("switch end" + i);
}
</script>

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

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

return false break;的更多相关文章

  1. 在jquery中each循环中,要用return false代替break,return true代替continue。

    在jquery中each循环中,要用return false代替break,return true代替continue. $.each(data, function (n, value) { if(v ...

  2. js跳出循环的方法区别( break, continue, return ) 及 $.each 的(return true 和 return false)

    js编程语法之break语句: break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句. 由于它是用来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的 ...

  3. js中return 、return false 、return true、break、continue区别

    在开发中不熟悉这三者区别的同学,一般都知道return可以中止,但会根据字面意思觉得return true 中止当前函数执行,但其后的函数还会继续执行.return false 中止当前函数执行,其后 ...

  4. 原生js使用forEach()与jquery使用each遍历数组,return false 的区别

    原生js使用forEach()与jquery使用each()遍历数组,return false 的区别: 1.使用each()遍历数组a,如下: var a=[20,21,22,23,24]; $.e ...

  5. return、break、continue的区别

    一.定义 return:语句用于终止当前方法运行,返回到调用该方法的语句处.如有返回值,则在return后面提供相应的返回值. break:其主要用于循环语句和switch语句,其作用均是强行终止语句 ...

  6. javaScript中的return,break,continue的区别

    导语: javaScript中有三种方法可以跳出循环或者终止循环.分别为break.return.continue. 正文: 一.break break 会使得整个程序终止执行或者包含了最内层的循环或 ...

  7. javascript中的return、return true、return false、continue区别

    1.语法为:return 表达式; 2.w3c中的解释: 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果  也就是:当代码执行到return语句时,函数返回一个结果就结束运行了,ret ...

  8. oncopy="document.selection.empty()"跟oncopy="return false"什么区别?

    实现效果一样,禁止复制. 区别: oncopy="document.selection.empty()"  没禁止,只是把它复制的内容,变成空了: oncopy="ret ...

  9. 不使用return false阻止event默认行为

    当我们点击一个a标签时,如果这个标签的href指向了另一个地址,那么浏览器会默认跳转到此地址.在页面中,有时我们需要触发点击事件,但是又不想触发默认行为,就需要阻止event的默认行为了. 常规做法 ...

随机推荐

  1. LINUX常用命令大全归纳篇

    su su命令是最基本的命令之一,常用于不同用户间切换. 例如,如果登录为 user1,要切换为user2,只要用如下命令: $su user2 然后系统提示输入user2口令,输入正确的口令之后就可 ...

  2. AspNetPager.dll 分页控件使用

    今天在用.net 做网站的时候,用到了DATALIST,但是datalist 没有自带的分页控件,后来在网上找了好长时间,看了aspnetpager.dll这个控件,这个控件挺好用的.我把使用方法写出 ...

  3. Freemarker简单用法

    Freemarker 最简单的例子程序   freemarker-2.3.18.tar.gz http://cdnetworks-kr-1.dl.sourceforge.net/project/fre ...

  4. 前端 HTML 常用标签 head标签相关内容

    HTML常用标签 head标签 我们首先来介绍一下head标签的主要内容和作用,文档的头部描述了文档的各种属性和信息,包括文档的标题.编码方式及URL等信息,这些信息大部分是用于提供索引,辩认或其他方 ...

  5. mysql 开启profiling

    mysql 开启profiling

  6. Ubuntu16.04安裝最新Nvidia驱动

    在安装完Ubuntu之后,可能通过自带驱动无法更新,一直处于无法下载状态,那么就需要通过到Nvidia官网下载驱动,手动安装了 方法/步骤 通过度娘,打开NVIDIA官网,然后在下载驱动那里找到自己的 ...

  7. selenium webdriver窗口切换(上)

    selenium webdriver窗口切换,有时候在做自动化的时候需要打开很多很多的页面, 当在操作不同的页面的时候需要切换窗口,下面是如何切换到前后页面窗口的操作: package test201 ...

  8. webpack相关

    原文  https://segmentfault.com/a/1190000005089993 Webpack是目前基于React和Redux开发的应用的主要打包工具.我想使用Angular 2或其他 ...

  9. !!【通达信】求教:如何对A股的所有股票按照某个选股指标的某个参数排序? - 理想论坛 中国人气最旺的股票论坛

    http://www.55188.com/thread-7152852-1-1.html .401进入指标排序,然后占右键把指标更改为MACD即可.(注意401前投资面有一个点!)

  10. cmd重启服务器,有时不想去机房,并且远程桌面连接登录不上了

    有时不想去机房,并且远程桌面连接登录不上了,需要远程重启服务器的,这时可以使用命令行方式远程重启.在cmd命令行状态下输入:shutdown -r -m \\192.168.1.10 -t 0 -f ...