最近从前端朋友那里了解到,很多人对函数中return的用法和含义都有模糊的理解。在这里,我会写一篇文章和你讨论退货的用法。
1定义
Return,字面意思就是return,return语句的官方定义会终止当前函数,返回当前函数的值;您可以查看以下示例代码:
!DOCTYPE html html lang=' en ' head meta charset=' UTF-8 ' title title/title脚本函数func 1(){ while(true){ return 1;} };alert(func 1());/script/headbody/body/html你可以看到我在函数中写了一个无限循环,然后在下面调用它。不写return语句时,浏览器总是循环执行语句,直接卡住;
写完return语句后,函数直接中断,向函数返回一个值1,这意味着函数执行后,函数体将被赋值为函数的返回值,这里返回1;
2写作
返回的官方定义后面可以跟一个值,也就是说后面可以跟任何数据类型、数字、字符串、对象等。用javascript编写。当然,它也可以返回另一个函数,比如栗子:
!DOCTYPE html html lang=' en ' head meta charset=' UTF-8 ' title title/title脚本函数func 1(){ return func(){ alert(1);} };alert(func 1());//!func 1()();此注释是自执行函数调用返回的函数/script 14/head 15 body 16 17/body 18/html的示例图片:
当然可以调用一个函数,我们可以写!func 1()();这里很容易理解,func 1();当我们打印出来的时候,是后面跟着return的匿名函数,所以我们可以以自执行函数的形式调用,这里传递一下!函数体();以…的形式。您可以取出注释中的代码并进行测试:
3练习
(1)练习1
因为我们可以返回一个函数,所以我们将重写下面的代码作为回调函数:
原始代码:
!doctype html lang=' en ' head meta charset=' utf-8 ' title title/title script if(提示('输入数字1')==1){!function (){ alert('失去右');}() }else{!Function (){ alert('错误输入');}()}/脚本/床头/正文/html重写后:
!doctype html lang=' en ' head metacarset=' utf-8 ' title title/title script func 1(){ if(prompt('输入数字1 ')==1){ return func(){ alert('输入正确');} }else{ return function (){ alert('错误输入');} } } !func 1()();/script/headbody/body/html重写前,if语句用于判断执行哪个函数;重写后通过if语句判断返回哪个函数,然后在下面调用;没有任何意义。它只是帮助我们理解回报;
(2)练习2
通过返回语句实现循环。
思考:由于return语句可以返回一个函数,所以可以自己返回,以后调用的时候可以实现循环函数;
!DOCTYPE html html lang=' en ' head meta charset=' UTF-8 ' title title/title script var I=1;//定义循环变量函数func 1(){ I;//如果(i5){//括号是循环条件文档,则更改循环变量. write(I ' br ');//这里是循环返回func 1();} } !func 1()();//调用函数/脚本/headbody/body/html。循环中每个部分的作用已经写在代码的注释中。博主可以自己尝试一下。以下是执行效果图:
4用javascript自己的方法定义回调函数
我们之前对退货的用法做了非常详细的研究。让我们研究一下javascript自己的方法中的回调函数。这里,我们在数组中使用sort();排序方法就是一个例子:
我们都知道sort();您可以在中编写回调函数来指定数组的排序规则;示例代码:
!DOCTYPE html html lang=' en ' head meta charset=' UTF-8 ' title title/title script var arr=[1,3,2,6,5];arr.sort(函数(a,b){ return a-b;});console . log(arr);/script/head body/body/htmlexecution渲染:
那么为什么会这样呢?跟退货有什么关系?相信很多博主都很困扰。让我们做一个实验,用-1替换return后面的a-b如果改动小,代码就不再上传,朋友可以手动修改;
执行渲染:
可以看出,当返回负数-1时,没有变化;让我们在返回0后更改a-b
执行渲染:
可以看出,返回0时没有变化;下面,我们将返回后的a-b替换为正数1;
执行渲染:
可以看出,当返回1时,数组顺序是相反的;
然后,我们可以得出以下结论:
a-b=0时,A在前,B在后;
当a-b0为时,A在后面,B在前面;
在这里,肯定有对A和B是什么有疑问的博主。我们可以通过以下代码打印出来:
!DOCTYPE html html lang=' en ' head meta charset=' UTF-8 ' title title/title script var a=[1,3,2,6,5];A. sort(函数(a,b) {console.log ('a是:' a 't b是: ' b ' br ');返回a-b;});console . log(a);/script/head body/body/htmlexecution渲染:
返回a-b;我们已经详细分析了升序,所以按降序返回b-a很简单,说白了就是return-(a-b);也就是在a-b的基础上,反过来变成降序。
这里我们可以得出一个大概的结论,return返回的值是一个数值,sort();该方法根据正值或负值对数组的各个部分进行排序。
以上是边肖介绍的JavaScript中return的用法。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!