本文详解JavaScript中return关键字的双重作用:在普通函数中用于终止执行并返回指定值,若省略则默认返回undefined;在DOM事件(如onclick)中,return用于设置window.event.returnValue以控制后续默认行为是否继续。通过对比带与不带return的事件调用方式,阐明如何正确利用返回值控制表单提交或链接跳转。
JavaScript中return的基本语法与返回值机制
JavaScript中的return关键字应用广泛,许多开发者对其具体作用机制可能尚不完全清楚。本文将深入解析return在JavaScript中的核心功能与使用场景。
return语句的主要功能是使当前函数立即退出,并将一个指定的值返回给调用者。
其基本语法结构如下:
return [expression];
其中,expression参数是可选的,代表希望从函数返回的具体数值或对象。如果省略该参数,函数将不返回任何有效值。
使用return语句可以强制终止函数的执行流程,并返回expression所指定的值。如果代码中省略了expression,或者函数执行过程中没有遇到任何return语句,JavaScript引擎会将undefined赋值给调用该函数的表达式。
以下示例展示了return语句在普通函数中的基本用法:
function myfunction(arg, arg){
var r;
r = arg * arg;
return(r);
}
return关键字表示程序从被调用的子函数返回到主调函数继续执行。返回值由return后的参数指定。通常情况下,使用return是必要的,因为函数调用的主要目的往往就是通过返回值来传递计算结果。
如果确定不需要函数返回任何具体值,可以在函数声明中使用void关键字来明确其类型。
补充说明:如果函数名前定义了返回类型(如int、double等),则必须提供返回值;而如果是void类型,则可以省略return语句。但在void函数中即使写了return,也无法返回具体的数值。
以下是一个非void类型函数的示例:
int f()
{
int i=;
return ;
//return(i); //这样也可以
}
以下是一个void类型函数的示例:
void f() { int i = 0; // return; // 即使注释掉return语句,代码也能正常执行 }
return在DOM事件处理中的控制作用
补充:JavaScript中return的特殊作用
在JavaScript的事件处理中,return包含了一些重要的细节知识:
例如,onClick='return add_onclick()' 与 onClick='add_onclick()' 之间存在显著区别。
在事件中调用函数时,使用return返回值实际上是对window.event.returnValue属性进行设置。
该属性的值决定了当前操作是否继续执行后续的默认行为。
当return返回true时,浏览器将继续执行默认的后续操作。
当return返回false时,浏览器将中断后续的默认操作。
如果直接执行函数而不使用return(即不加return关键字),则不会对window.event.returnValue进行显式设置。
因此,操作会默认继续执行。
具体说明如下:
例如:
在 <a href="abc.htm" onclick="return add_onclick()">Open</a> 中
如果函数 add_onclick() 返回 true,那么页面将会正常打开 abc.htm。
否则(即返回 false),页面不会自动跳转到 abc.htm,而只会执行 add_onclick() 函数内部定义的内容(除非add_onclick函数内部手动控制了页面跳转)。
而 <a href="abc.htm" onclick="add_onclick()">Open</a>
无论 add_onclick() 返回什么值,页面都会在执行完 add_onclick 函数后,默认打开 abc.htm。
另外补充:
在onclick事件中,其行为相当于 onclick="return true/false"。
例如:
调用方法返回true时才提交表单,反之则不提交,这是submit按钮的常见用法。
function check()
{
if(obj.value=="" )
{
window.alert("不能为空!");
obj.focus();
return false;
}
return true;
}
在调用js函数时,如果不需要return,但希望表单能够提交,需要在js函数中明确添加提交语句。
------------------------------------------------------------------------------------------
例如:
<script language="javascript">
function check()
{
if(obj.value=="" )
{
window.alert("不能为空!");
obj.focus();
return false;
}
document.myform.submit();
return true;
}
</script>
注:document.myform.submit(); 必须在 return true 之前执行。