今天,因为
keydown(function(){})
中的函数返回值想了半天,为啥当游戏结束时,ctrl + r
按键刷新会失效。后来了解了return false
是可以将默认的事件行为取消掉,故导致按键本身默认功能失效。
return语法及返回方式
①返回控制与函数结果
- 语法为:
return 表达式;
- 语句结果函数的执行,返回调用函数,而且把表达式的值作为函数结果返回出去
②返回控制无函数结果
- 语法为:
return ;
- 在大多数情况下,为事件处理函数如果让其返回
false
,可以防止默认的事件行为发生。
举例一: 超链接的跳转事件
默认情况下,点击一个<a>
标签元素,页面会跳转到该元素href
属性指定的页。 而return false
就相当于终止符,return true
就相当于执行符。在js中return false
的作用一般是用来取消默认动作的。比如你单击一个链接除了触发你的”onclick“事件以外还要触发一个默认事件就是执行页面的跳转。所以这时候如果你想取消该对象的默认动作就可以return false
来阻止它的动作。也就是说如果你想用js代码来局部改变一些数据而不引起页面其他部位的变化,那么你就应该在onclick事件代码的后面加上return false;
举例二: keydown事件——键盘各个键的默认效果
this.playground.game_map.$canvas.keydown(function(e){
//返回true表示不会使Keydown事件失效。
if (outer.playground.room_state !== "Fighting")
return true; //若为false就导致游戏结束后,键盘按键失效。
if (e.which === 81 && outer.radius > outer.eps){ //q,注意是三个等号。
//技能cd判断放在本技能中判断。
if (outer.fireball_coldtime > outer.eps)
return true;
outer.cur_skill = "fireball";
return false;
}
});
举例三: 提交表单事件
在js中,我们通常用return false
来阻止提交表单或者继续执行下面的代码,通俗来说就是阻止执行默认的行为。
function s1(){
if(true){
return false;
}
}
function s2(){
m();
n();
p();
}
上面两个例子,函数s1那样写没有问题的,if函数体里返回出去false,终止函数.而在函数s2里,如果我们在m函数里返回一个return false阻止提交,但是这并不影响函数n和函数p的执行.在s2函数里调用函数m,那里面的return false对于函数s2来说,只是相当于返回值,并不能阻止函数s2的执行.return false只在当前函数有效,并不会影响其他外部函数的执行.
总之:return false
只在当前函数有效,不会影响其他外部函数的执行。
总结
retrun true;
返回正确的处理结果。return false;
返回错误的处理结果,终止处理。(也就是阻止执行默认的行为)return ;
1.函数执行此这就行了,后面就别管了,可以继续做其它事了
2.函数执行有个结果,需要将这个结果返回,交由其它部分使用
3.这第三条把控制权返回给页面,应该是特指通过事件直接在页面元素上调用的情况。
比如:
<input type="button" onclick="aa()" />
这样调用aa()
函数的时候,就阻塞页面,调用完成(return
或函数执行完成)后再返回给页面执行其它流程。