常规用法

在普通函数中:return 语句终止函数的执行,并返回一个指定的值给函数调用者,一般会用一个变量接收这个返回值再进行其它处理。如果未指定返回值,则返回 undefined

其中,返回一个函数是一个很重要的使用方式,可参看闭包的使用

在Generator中:return 语句可在生成器中使用,表现和普通函数基本一致。

也可以通过gen.return(value)使用,不管生成器是否结束,调用该方法均会返回给定的value并结束生成器。如果未指定value也会返回undefined

值得注意的:

  1. 如果一个函数没有return关键字时,返回给函数调用者的仍是undefined;
  2. return只能终止函数且只能终止当前函数的执行,不会影响其外部函数

特殊用法

1. 阻止默认事件(十分不推荐)

目前return false在jQuery中可同时阻止冒泡和默认事件。但是在原生JS中只能阻止默认事件,并且也只能在HTML事件属性和DOM0级事件处理方法中才能通过返回 return false的形式阻止,因此建议采用标准方法去阻止默认事件。

阻止默认事件示例:

    //html
<a href="https://www.baidu.com" id="btn">跳转不</a> //js
var btn = document.getElementById("btn");
btn.onclick = function(e) {
console.log("点击了,但是!");
//return false; //可以阻止,但不建议使用
window.event? window.event.returnValue = false : e.preventDefault();//推荐使用
}
btn.addEventListener("click",function(e){
console.log("点击了,但是!");
return false;//这种方式是阻止不了默认事件的,因为不是DOM0级事件
// window.event? window.event.returnValue = false : e.preventDefault();//推荐使用
})

另外:

    //html
<a href="https://www.baidu.com" id="btn" onclick="handle()">跳转不</a>
//js
function handle(){
return false;
}

上面这种写法是阻止不了默认事件的,因为阻止默认事件的正确姿势是onclick="return false",而上面这种写法相当于onclick="false"

阻止冒泡示例

    //html
<div id="father" class="father">
这是父级
<div id="child" class="child">
这是子级
<p>冒泡不</p>
</div>
</div> //js
var father = document.getElementById("father");
var child = document.getElementById("child");
father.onclick = function() {
console.log("点击了父级");
};
child.onclick = function(e) {
console.log("点击了子级");
//return false; //无用
window.event ? window.event.cancelBubble = true : e.stopPropagation();//可以阻止冒泡
} //css
.father {
background: yellow;
padding: 10px;
} .child {
background: red;
}

2. 在window.onerror中的使用

return false虽然被许多事件赋予了阻止默认事件的能力,但是onerror却是个例外!

详细说明可参看:window.onerrorDefault actions and cancelable events

    //可以阻止异常信息在控制台中显示,线上可以自行收集异常信息后阻止外人看到控制台报错,开发环境不建议使用。
window.onerror = function(msg, url, line, col, error) {
console.log("------errorInfo---",msg, url, line, col, error)
return true; //这里用return false不行!
}
window.addEventListener('error', (function(e) {
console.log("-----errorEvent----", e)
e.preventDefault() //这里换成 return false或return true均不行
}), true);

return false 和 return true的更多相关文章

  1. javascript中的 return false和return true

    关于javascript中的 return false和return true,return 是javascript里函数返回值的关键字,一个函数内处理的结果可以使用return 返回,这样在调用函数 ...

  2. JS return false 与 return true

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

  3. js中return、return false 、return true各自代表什么含义

    return语句代表需要返回一个值,如果不需要就不需要使用return语句.都类似一个出口,return 可以结束方法体中 return后面部分代码的执行.return false 或者 return ...

  4. js中return false,return,return true的使用方法及区别

    起首return作为返回keyword,他有下面两种返回体式格式 1.返回把握与函数成果 语法为:return 表达式; 语句停止函数履行,返回调用函数,而且把表达式的值作为函数的成果 2.返回把握无 ...

  5. return false与return true的区别

    <a href="http://www.baidu.com" onclick="alert(11);return true;alert(22)">链 ...

  6. JavaScript中 return; 、return false; 与return true的区别

    工作中有时候用到  return; ,有时候用到  return false;  还有时候会用到  return true; 这三个到底是什么区别?为什么一会这个一会又那个! 1.先看下return ...

  7. js中return false,return,return true的用法及差别

    起首return作为返回关键字,他有以下两种返回体式格式 1.返回把握与函数成果 语法为:return 表达式; 语句停止函数履行,返回调用函数,并且把表达式的值作为函数的成果 2.返回把握无函数成果 ...

  8. js:return [ expression ],return false,return true,return的区别

    1.return [ expression ] return返回值实际上是对window.event.returnvalue进行设置. 2.return false,阻止默认的行为, ① 当给a标签绑 ...

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

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

随机推荐

  1. (随用随总结)Linux下面的特殊权限&不同的文件类型

    一.Linux的文件信息   linux文件被保存在文件系统下,由以下属性组成: ls -l 之后看到的信息 从左到右可以看到文件的以下属性 各种类型 访问权限 链接数(跟 inode相关,ln 硬链 ...

  2. js压缩 uglify

    grunt-contrib-uglify uglify是一个文件压缩插件,项目地址:https://github.com/gruntjs/grunt-contrib-uglify 本文将以一个DEMO ...

  3. logback配置每天生成一个日志文件,保存30天的日志文件

    <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 文件输出格 ...

  4. Android UI开发第三十六篇——使用Volley加载图片列表

    Android开发者可能会使用Universal Image Loader或者Square`s newer Picasso这些第三方的库去处理图片的加载,那么Volley是怎么加载图片列表的呢,这一篇 ...

  5. cxGrid 使用指南 1

    1:cxgrid是应该数据关联的控件,类似dbgrid.2:一般用来查阅表信息,如果要修改的话,直接在上面编辑或添加 非常不方便通常要放几个EDit来对选中的记录进行编辑或添加记录. 因为表一般都有主 ...

  6. 《从零开始学Swift》学习笔记(Day54)——抛出错误

    原创文章,欢迎转载.转载请注明:关东升的博客 能放到try后面调用函数或方法都是有要求的,他们是有可能抛出错误,在这些函数或方法声明的参数后面要加上throws关键字,表示这个函数或方法可以抛出错误. ...

  7. freemarker的${!}

    ${sss!} <#--没有定义这个变量,默认值是空字符串! --> ...................................... 转自:https://blog.csdn ...

  8. Less-mixin判断(守卫)二

    mixin卫士--判断 或与且语法 且:()and() 或:(),() --且 examlpe: .test(@a) when (isNumber(@a)) and (@a>=5){ font- ...

  9. Jupyter Notebook远程服务器配置

    首先要生成密码,打开python终端. In [1]: from IPython.lib import passwd In [2]: passwd() Enter password: Verify p ...

  10. MySQL中的注释(有三种)

    MysQL支持三种注释: .#... (推荐这种,具有通性) ."-- ..." (注意--后面有一个空格) ./*...*/