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

时间:2022-09-06 10:05:42

 

1、语法为:return 表达式;

2、w3c中的解释:

  语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果

    也就是:当代码执行到return语句时,函数返回一个结果就结束运行了,return后面的语句根本不会执行。

举个栗子:

function myFun() {
console.log("Hello");
return "World";
console.log("byebye")
}
myFun();

 上面代码输出“Hello”到控制台,返回“World”,但没有输出“byebye”,因为函数遇到return语句就退出了。 

3、return false:

  在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页。

  js中return false作用一般是用来取消默认动作 / 阻止提交表单 / 阻止继续执行下面的代码。

  注意:return false 只在当前函数有效,不会影响其他外部函数的执行。
举个栗子说明:
function a(){

   if(True)
return false;
}
这是没有任何问题的,如果我改成这种 function Test(){ a(); b(); c(); }

  即使a函数返回return false 阻止提交了,但是不影响 b()以及 c()函数的执行。在Test()函数里调用a()函数,那面里面

return false 对于Test()函数来说,只是相当于返回值。而不能阻止Test()函数执行。


return false 返回错误的处理结果,终止处理。 就相当于终止符

4、return true:

  return true  返回正确的处理结果,就相当于执行符

5、return:把控制权返回给页面。

6、关于阻止浏览器执行默认行为

  大家对事件冒泡都很熟悉了吧,我想表达的是大部分事件都是先在初始DOM上触发,然后再通过DOM树往上,在每一级父元素上触发,事件不会在兄弟节点或是子节点上冒泡(当事件向下冒泡时,我们叫它事件捕捉(event capturing)),

    “return false”之所以被误用的如此厉害,是因为它看起来像是完成了我们交给它的工作,浏览器不会再将我们重定向到href中的链接,表单也不会被继续提交,但这么做到底有什么不对呢?

7、”return false“到底做了什么?

  当你每次调用”return false“的时候,它实际上做了3件事情:

  •event.preventDefault();
  •event.stopPropagation();
  •停止回调函数执行并立即返回。

  “等等”,你叫了起来!我只是想让浏览器停止继续执行默认行为而已,我不需要它去做另外2件事。

  这3件事中用来阻止浏览器继续执行默认行为的只有preventDefault,除非你想要停止事件冒泡,否则使用return false会为你的代码埋下很大的隐患,让我们通过一个真实的例子来看看这样的误用会造成什么后果:

<div class="post">
<h2><a href="http://jb51.net">My Page</a></h2>
<div class="content">
Teaser text...
</div>
</div>
<div class="post">
<h2><a href="http://jb51.net">My Other Page</a></h2>
<div class="content">
Teaser text...
</div>
</div>

现在假设我们想要在用户点击文章标题时,将文章动态载入到div.contentd中:

jQuery(document).ready(function ($) {
$("div.post h2 a").click(function () {
var a = $(this),
href = a.attr('href'), // Let jQuery normalize `href`,
content = a.parent().next();
content.load(href + " #content");
return false; // "cancel" the default behavior of following the link
});
});

  这段代码可以正常工作(至少目前是),但如果我们顺着这个思路继续,如果我想要在用户点击了一个div.post元素(或者任何一个它的子元素)时,给它加上一个active类,我就需要给div.post增加了一个click回调:

var posts = $("div.post");
posts.click(function () {
posts.removeClass("active");
$(this).addClass("active");
});

  现在,如果我们点击一个帖子的标题,这段代码会工作吗?答案是不会,因为我们在标题的click回调里使用了return false而不是我们应该使用的,”return false“等于event.preventDefault();加event.stopPropagation();,所以事件冒泡就被终止了,click事件不会被冒泡到div.post上,我们为它添加的事件回调当然也就不会被调用了。

那先来了解下什么是preventDefault():

preventDefault()

  大多数情况下,当你使用return false时,你其实真正需要的是e.preventDefault()。要使用e.preventDefault,你需要确保你传递了event参数到你的回掉函数中(在这个例子里,就是那个e):

$("a").click(function (e) {
// e == our event data
e.preventDefault();
});

  它会替我们完成所有工作,但不会阻止父节点继续处理事件,要记住,你放在代码中的限制越少,你的代码就越灵活,也就越易于维护。

stopPropagation()

定义:不再派发事件。

终止事件在传播过程的捕获、目标处理或起泡阶段进一步传播。调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点。

  该方法将停止事件的传播,阻止它被分派到其他 Document 节点。注意,虽然该方法不能阻止同一个 Document 节点上的其他事件句柄被调用,但是它可以阻止把事件分派到其他节点。

8、什么时候用 return false?

  只有当你同时需要preventDefault和stopPropagation,并且你的代码可以接受直到你的回调执行完成才停止执行浏览器的默认行为,那你就可以使用”return false“。

return、continue、break 、continue 的区别 

return : 

      (1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行。
      (2) return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致。
      (3) return后面也可以不带参数,不带参数就是返回空,其实主要目的就是用于想中断函数执行,返回调用函数处。

continue : 

  终止本次循环的执行,即跳过当前这次循环中continue语句后尚未执行的语句,接着进行下一次循环条件的判断

   它不是退出一个循环,而是开始循环的一次新迭代。

continue语句只能用在while语句、do/while语句、for语句、或者for/in语句的循环体内,在其它地方使用都会引起错误!

举个栗子:

for(var i=1;i<=10;i++) {
if(i==8) {
continue;
}
document.write(i);
} //当i=8的时候,直接跳出本次for循环。下次继续执行。 //输出结果:1234567910

break :

    (1)break在循环体内,强行结束循环的执行,也就是结束整个循环过程,不在判断执行循环的条件是否成立,直接转向循环语句下面的语句。
    (2)当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。
 
举个栗子:
 for(var i=1;i<=10;i++) {
if(i==8) {
break;
}
document.write(i);
} //当i=8的时候,直接退出for这个循环。这个循环将不再被执行!
//输出结果:1234567

部分资料来源于网络,仅供学习参考,侵权删

资料来源:http://blog.csdn.net/holandstone/article/details/7613261

http://www.jb51.net/article/74959.htm

http://www.jb51.net/article/42711.htm

javascript中的return、return true、return false、continue区别的更多相关文章

  1. jquery 中cache为true与false 的区别

    $.ajax({type: "get",cache: false,url: url,success: function (msg) { }}); cache为true与false ...

  2. &ast;&ast;&ast;php解析JSON二维数组字符串&lpar;json&lowbar;decode函数第二个参数True和False的区别&rpar;

    客户端的请求体中的数据:[{"msg_id": 1, "msg_status": "HAS_READ" }, { "msg_id& ...

  3. JavaScript 中定义变量时有无var声明的区别

    关于JavaScript中定义变量时有无var声明的区别 var a=5; //正确 a=5; //正确 在javascript中,以上两种方法都是定义变量的正确方法.微软的Script56.CHM中 ...

  4. JavaScript中querySelector&lpar;&rpar;和getElementById&lpar;&rpar;(getXXXByXX)的区别

    在日常开发中,使用JavaScript获取元素的时候,最常用的方法就是document.getElementById(getXXXByXX)方法.但是最近发现有很多地方使用的是querySelecto ...

  5. javascript中的undefined&comma;null&comma;&quot&semi;&quot&semi;&comma;0和false的云集

    在各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库字段的空值DBNull,bool ...

  6. js中&OpenCurlyQuote;0’到底是 true 还是 false

    if ('0') alert("'0' is true");  if ('0' == false) alert("'0' is false");结果是,两次都 ...

  7. 在javascript中关于submit和button提交表单区别

    submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了,submit和button,二者都以按钮的形式展现,看起来都是按钮,所不同的是type属性和处发响应的事件上. ...

  8. (转)在javascript中关于submit和button提交表单区别

      原文来自:http://www.jb51.net/article/42236.htm   submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了,submit和b ...

  9. &lbrack;android&rsqb; setOnTouchEvent 设置返回值为true 和 false的区别

    今天在做自定义的可选文本的 TextView 类时,用到了 View 类的 setOnTouchListener(OnTouchListener l)事件监听,在构造 OnTouchListener ...

  10. JavaScript中instanceof与typeof运算符的用法及区别详细解析

    JavaScript中的instanceof和typeof常被用来判断一个变量是什么类型的(实例),但它们的使用还是有区别的: typeof 运算符 返回一个用来表示表达式的数据类型的字符串. typ ...

随机推荐

  1. ShellCode框架&lpar;Win32ASM编写&rpar;

    主要方法: 使用宏的一切技巧让编译器 算出代码的长度 有较好的扩充性 include ShellCodeCalc.inc ;>>>>>>>>>&g ...

  2. &lbrack;Bootstrap&rsqb;7天深入Bootstrap&lpar;4&rpar;CSS组件

    Bootstrap框架的三大核心之二:组件. 组件也是最核心的地方,因为绝大部分的网页都必须利用组件才能构建出绚丽的页面. 组件包括:Icon图标(Glyphicon). 下拉菜单(Dropdown) ...

  3. quaternion&ast;Vector3的新理解

    原地址:http://www.cnblogs.com/88999660/p/3262656.html using UnityEngine; using System.Collections; publ ...

  4. 使用escape编码地址栏中的中文字符

    在通过地址栏传递参数的时候,有时候会遇到中文参数,在获取这种中文参数值得时候, 往往会出现乱码, 解决办法如下: 在传递参数的使用 escape 函数进行编码,获取的时候再进行解码即可. 例如: va ...

  5. Webgrid参数格式

    显示图片 grid.Column(null,"图片",format:p=>Html.Raw(string.Format("<img src='{0}'/&gt ...

  6. struts2集成fckeditor&lpar;来自大型门户网站是这样练成的一书&rpar;

  7. ajax接口和后台交互

    //定义一个公众处理ajax的方法 function handelAjax(url,method,parm,callback) { $.ajax({ url:url, type:method, dat ...

  8. gulp和grunt 分享ppt

    gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码,而且大 ...

  9. PAT A1123 Is It a Complete AVL Tree (30 分)——AVL平衡二叉树,完全二叉树

    An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child sub ...

  10. IDA Pro Disassembler 6&period;8&period;15&period;413 &lpar;Windows&comma; Linux&comma; Mac&rpar;

    IDA: What's new in 6.8 Highlights This is mainly a maintenance release, so our focus was on fixing b ...