JavaScript return 语句,表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。
return返回值的作用就是把固定不变的,常用的代码封装起来写在类里,每次用到的时候就调用就行了。
先来简单总结一下renturn的实际使用。
1. return 语句会终止函数的执行并返回函数的值。
写一个button触发onclick事件
function demo1() {
return1;
document.write('
}
在return的时候,函数值等于1,后续代码不会再执行,不会有后续输出。
function demo2() {
function a(b,c) {
return b+c;
document.write('
}
var abc=a(5,80);
alert(abc);
}
调用abc这个变量的时候,它的值会是85;如果想直接输出结果,不要返回值那就删除掉return b+c,这样abc是没有值的,但是网页会输出85。
也可以说默认函数是没有返回值的。通常函数经过一系列处理后需要给外部返回一个值或者对象,如
function demo3() {
function sum(a,b){
returna+b
}
alert(sum(1,2));
}
这个时候alert显示的值是3,而如果去掉return,则会返回undefined。
2. 基于函数返回值的应用
return在终止函数运行时的应用:为事件处理函数返回return:false; ,作用在于阻止默认事件行为和取消默认动作,如
为它添加一个return值
function demo4() {return false;}
这样点击链接就不会跳转
以上就是return的常见用法,此时有一个比较常见的问题,即:若在for循环中使用了return,还会执行下一次循环吗?
function demo5() {
for(var i=1; ;i++) {
console.log(i+"A");
return;
console.log(i+"B");}
console.log(i+"C");}
由于出现return,函数直接终止运行并且返回当前值,所以这段函数的输出值只有1A。
所以,如下函数,
function demo6() {
function counter() {
for(var count=1; ;count++) {
console.log(count+"A");
if(count===5) {return;}
console.log(count+"B");}
console.log(count+"C");}
counter();}
输出值是1A,1B,2A,2B,3A,3B,4A,4B,5C。
除了return,还有其他可以让for循环中断的方式。
1.break
break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句。由于它是用来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的break语句才是合法的。如果一个循环的终止条件非常复杂,那么使用break语句来实现某些条件比用一个循环表达式来表达所有的条件容易得多。
2. continue
continue语句和break语句相似。所不同的是,它不是退出一个循环,而是开始循环的一次新迭代。要注意的是continue语句只能用在while语句、do/while语句、for语句、或者for/in语句的循环体内,在其它地方使用都会引起错误。
参考文献
1. http://www.jb51.net/article/24101.htm
2. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return
3. 红宝书
相关PPT可见:https://ptteng.github.io/PPT/PPT/js-01-return%E7%9A%84%E7%94%A8%E6%B3%95.html#/
以及腾讯视频:https://v.qq.com/x/page/k0520zb48dg.html
问题整理:
1. i++和++i的区别
++i使用的是前置运算,先赋值再运算,i++使用的是后置运算,先运算再赋值,详见红宝书
2. 关于闭包
闭包:当function里嵌套function时,内部的function可以访问外部function里的变量。当return的是内部function时,就是一个闭包。内部function会close-over外部function的变量直到内部function结束。
3. 迭代的含义
迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值,for循环就是迭代的一种
使用return 语句可以返回一个变量内的值或一个指针,可做开关使用,
用return0,表示返回为空,表示假,
用return1,表示返回为真值,表示真。
return 0 代表程序正常退出
return 1 代表程序异常退出
return 关键字的作用是从被调用函数跳回到发生调用函数开始处!其副作用是可返回一个参数值。
例如:
1、不返回值调用(常用)
uchar ret(void) //用于返回原函数
{
a+=100;
return (0);
}
1.1不返回值调用(作判断使用)
uchar ret(void) //用于返回原函数
{
a+=100;
return (0); //程序返回,不再往下执行
printf("error!");
}
2、返回参数值调用
uchar ret(void) //用于返回一个参数值
{
a+=100;
return (a);
}
被调函数 return 0 或 return 1 只是给主调函数一个标志,说明他的执行过程遇到的情况。
return 0,说明程序正常退出,返回到主程序继续往下执行。
return 1,说明程序异常退出,返回主调函数来处理,继续往下执行。
return 0 或 return 1 对程序执行的顺序没有影响,只是大家习惯于使用 return (0) 退出子程序而已。
关于正常退出、异常退出、退出返回的值、程序执行顺序有无影响,测试:
#include"stdio.h"
#define uchar unsigned char
uchar a=100;
uchar ret0(void)
{
return 0;
printf("error!\n");
}
uchar ret1(void)
{
return 1;
printf("error!\n");
}
void main()
{
printf("a1=%d\n",a); //打印a的值
/*****查看 return 0 和 return 1退出后返回的值****/
//注意:这种方法可能不是最底层返回(仅供测试)
printf("ret0返回值=%d\n",ret0()); //return 0 退出函数时返回的参数
printf("ret1返回值=%d\n",ret1()); //return 1 退出函数时返回的参数
/*****查看return 1异常退出 测试程序是否往下执行****/
a+=100;
printf("a2=%d\n",a);
while(1);
}
1,原生js 中 直接作为函数的返回
for (var i = 0; i < 10; i++) {
if (i ==2) {
return;
}
}
对于for 可以用break跳出整个循环,仍然执行下面的代码,可以用continue跳出当前循环
2,jquery 中,
var arr = [1,2,3,4,5]
num()
function num() {
$.each(arr, function(index, val) {
if (val == 2) {
return true;
}
console.log("aaaaaaaaaaa");
});
}
如果是return true的话就是跳出当前循环,和return一样,如果是return false;就跳出整个each;但是仍然或执行console
因此 each中的return false相当于 for中的break,return和return true 相当于continue
一、返回控制与函数结果,
语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果
二、返回控制,
无函数结果,语法为:return;
在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个元素,页面会跳转到该元素href属性指定的页.
Return False 就相当于终止符,Return True 就相当于执行符。
在js中return false的作用一般是用来取消默认动作的。比如你单击一个链接除了触发你的
onclick时间(如果你指定的话)以外还要触发一个默认事件就是执行页面的跳转。所以如果
你想取消对象的默认动作就可以return false。
首先在js中,我们常用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 只在当前函数有效,不会影响其他外部函数的执行。
三:总结
retrun true; 返回正确的处理结果。
return false;返回错误的处理结果,终止处理。
return;把控制权返回给页面。
四:区别
1. return;返回null,起到中断方法执行的效果,只要不return false事件处理函数将会继续执行,表单将提交
2. return false;,事件处理函数会取消事件,不再继续向下执行。比如表单将终止提交。
JavaScript在事件中调用函数时用return返回值实际上是对window.event.returnValue进行设置。该值放在提交表单中的onclick事件中则不会提交表单,如果放到超链接中则不执行超链接,也就禁止或取消了请求。l
当在 Open 中
如果函数 checkForm() 返回 true, 那么 页面就会打开 test.html
否则, (返回 false), 那么页面不会跳转到 test.html, 只会执行你的 checkForm() 函数里的内容. (add函数中控制页面转到test.html除外)
而 Open
不管 checkForm() 返回什么值, 都会在执行完 add后打开页面test.html
<form action="http://www.baidu.com" name="myform" onsubmit="return checkForm()">
username:
<input type="text" name="username">
password:
<input type="password" name="password">
<input type="submit" value="提交">
form>
<script>
document.myform.username.focus();
function checkForm(){
if(document.myform.username.value == ""){
alert("请输入用户名!");
document.myform.username.focus();
return false;
}
if(document.myform.password.value == ""){
alert("请输入密码!");
document.myform.password.focus();
return false;
}
return true;
}
script>
Java中return用于方法,两个作用:
(1)返回方法指定类型的值(这个值总是确定的),也可以是对象
(2)方法的结束
两种形式:(1)有返回类型 例如:return i;
(2)无返回类型 return;
一般方法前有void代表无返回值,没有void有返回值。
例1
public class TestReturn {
public static void main(String args[]) {
TestReturn t = new TestReturn();
t.test1();
t.test2();
}
/**
* 无返回值类型的return语句测试
*/
public void test1() {
System.out.println("---------无返回值类型的return语句测试--------");
for (int i = 1; ; i++) {
if (i == 4) return;
System.out.println("i = " + i);
}
}
/**
* 有返回值类型的return语句测试
* @return String
*/
public String test2(){
System.out.println("---------有返回值类型的return语句测试--------");
return "返回一个字符串";
}
}
运行结果:
---------无返回值类型的return语句测试--------
i = 1
i = 2
i = 3
---------有返回值类型的return语句测试-------
返回一个字符串