return false 和 return true
常规用法
在普通函数中:return 语句终止函数的执行,并返回一个指定的值给函数调用者,一般会用一个变量接收这个返回值再进行其它处理。如果未指定返回值,则返回 undefined
其中,返回一个函数是一个很重要的使用方式,可参看闭包的使用
在Generator中:return 语句可在生成器中使用,表现和普通函数基本一致。
也可以通过gen.return(value)使用,不管生成器是否结束,调用该方法均会返回给定的value并结束生成器。如果未指定value也会返回undefined
值得注意的:
- 如果一个函数没有return关键字时,返回给函数调用者的仍是undefined;
- 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.onerror,Default 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的更多相关文章
- javascript中的 return false和return true
关于javascript中的 return false和return true,return 是javascript里函数返回值的关键字,一个函数内处理的结果可以使用return 返回,这样在调用函数 ...
- JS return false 与 return true
在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页. Return False 就相当于终止符 ...
- js中return、return false 、return true各自代表什么含义
return语句代表需要返回一个值,如果不需要就不需要使用return语句.都类似一个出口,return 可以结束方法体中 return后面部分代码的执行.return false 或者 return ...
- js中return false,return,return true的使用方法及区别
起首return作为返回keyword,他有下面两种返回体式格式 1.返回把握与函数成果 语法为:return 表达式; 语句停止函数履行,返回调用函数,而且把表达式的值作为函数的成果 2.返回把握无 ...
- return false与return true的区别
<a href="http://www.baidu.com" onclick="alert(11);return true;alert(22)">链 ...
- JavaScript中 return; 、return false; 与return true的区别
工作中有时候用到 return; ,有时候用到 return false; 还有时候会用到 return true; 这三个到底是什么区别?为什么一会这个一会又那个! 1.先看下return ...
- js中return false,return,return true的用法及差别
起首return作为返回关键字,他有以下两种返回体式格式 1.返回把握与函数成果 语法为:return 表达式; 语句停止函数履行,返回调用函数,并且把表达式的值作为函数的成果 2.返回把握无函数成果 ...
- js:return [ expression ],return false,return true,return的区别
1.return [ expression ] return返回值实际上是对window.event.returnvalue进行设置. 2.return false,阻止默认的行为, ① 当给a标签绑 ...
- js中return 、return false 、return true、break、continue区别
在开发中不熟悉这三者区别的同学,一般都知道return可以中止,但会根据字面意思觉得return true 中止当前函数执行,但其后的函数还会继续执行.return false 中止当前函数执行,其后 ...
随机推荐
- Stanford CoreNLP 3.6.0 中文指代消解模块调用失败的解决方案
当前中文指代消解领域比较活跃的研究者是Chen和Vincent Ng,这两个人近两年在AAAI2014, 2015发了一些相关的文章,研究领域跨越零指代.代词指代.名词指代等,方法也不是很复杂,集中于 ...
- redis php 实例二
前面一篇博客主要是string类型,list类型和set类型,下面hash类型和zset类型 1,hset 描述:将哈希表key中的域field的值设为value.如果key不存在,一个新的哈希表被创 ...
- (转)java中Executor、ExecutorService、ThreadPoolExecutor介绍
转自: http://blog.csdn.net/linghu_java/article/details/17123057 ScheduledThreadPoolExecutor介绍: http:// ...
- poj 2187:Beauty Contest(计算几何,求凸包,最远点对)
Beauty Contest Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 26180 Accepted: 8081 D ...
- Origin8.0使用心得(不定时更新)
如何画双Y轴坐标? 网上的教程很多,有点鱼龙混杂的感觉,今天整理一下最简单的方法,备忘. 有3组数据,1组自变量,2组因变量.如何在同一张图下使用同一个X轴,但左边的Y轴与右边的Y轴的刻度不一样? 最 ...
- python3----练习题(装饰器)
装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象.也就是说装饰器的作用就是为已经存在的对象添加额外的功能. 当使用 ...
- CentOS 7安装与配置jdk-8u162
一.下载jdk-8u162版本 jdk-8u162-linux-x64.rpm 二.上传jdk到centos下 上传完后的文件如下,文件只有读写权限,没有执行权限 使用如下命令授权,如果文件已经有了执 ...
- 桥梁模式(Bridge)
桥梁模式属于结构类的设计模式,示意结构图如下:
- 【BZOJ4317】Atm的树 动态树分治+二分+线段树
[BZOJ4317]Atm的树 Description Atm有一段时间在虐qtree的题目,于是,他满脑子都是tree,tree,tree…… 于是,一天晚上他梦到自己被关在了一个有根树中,每条路径 ...
- apk获取源码(dex2jar、jd-gui)
1.下载dex2jar.zip,并解压文件 2.下载jd-gui.zip,解压文件 3.解压apk文件,找到其中的classes.dex 4.将classes.dex复制到dex2jar.bat所在目 ...