UBAINS

 找回密码
 立即注册
搜索
热搜: UBAINS
查看: 1947|回复: 0

[学习笔记] 函数返回一个或多个值

[复制链接]

10

主题

11

帖子

447

积分

版主

Rank: 7Rank: 7Rank: 7

积分
447
QQ
发表于 2020-10-28 18:05:12 | 显示全部楼层 |阅读模式
本帖最后由 pidtfork 于 2020-10-28 18:07 编辑

函数返回一个或多个值

返回值


返回值意如其名,是指函数执行完毕后返回的值。函数中使用关键字return返回值,一个函数执行时遇到return关键字后,相当于结束了本函数的运行,返回return 后面跟着的值,如果return后面还有代码将不在运行。
return 后面可以跟任意类型的值,所以函数的返回值可以是任意类型的,如果函数没有return或者return没有任何值,则函数的返回值为undefined;


返回一个值

求两个数的和函数,add()的写法和sum()是一样的没有区别

  1. function sum(num1,num2) {
  2.     varvalue = num1 + num2;
  3.     returnvalue;//返回一个值
  4. }
  5. sum(10,50); //60

  6. function add(num1,num2){
  7.     returnnum1 + num2;//返回一个值,表达式会在返回前解析运算
  8.     //等价sum方法
  9. }
复制代码


返回2个或者多个值


可以通过返回一个对象或者数组的方式,来返回多个值,使用的较多的是用对象的方式返回数据。下面例子是一个根据传入圆的半径,返回圆的周长和圆的面积。
  1. function circle(r){
  2.     vars,c;
  3.     s = Math.PI*r*r;
  4.     c = 2*Math.PI*r;
  5.     return{
  6.         s:s,
  7.         c:c
  8.     }
  9. }
  10. varobj = circle(5); //{ s: 78.53981633974483, c:31.41592653589793 }
  11. obj.s   //78.53981633974483
  12. obj.c  //31.41592653589793
  13. function circle_arr(r){
  14.     vars,c;
  15.     s = Math.PI*r*r;
  16.     c = 2*Math.PI*r;
  17.     return[s,c];
  18. }
  19. circle_arr(5);   //[78.53981633974483, 31.41592653589793 ]
复制代码



返回函数或对象实例

返回值可以是任意类型,当然也可以返回函数。
你可能看到过类似这样的函数调用 a(1)(2)(3)("hello");其实就是然后值返回了一个函数类型而已。
下面例子就是实现,a函数返回了函数b,b函数返回了函数c,c函数返回的是一个匿名函数。


  1. function a(params){
  2.     console.log("a = " +params);
  3.     returnb;
  4. }
  5. function b(params){
  6.     console.log("b = "+ params);
  7.     returnc;
  8. }
  9. function c(params){
  10.     console.log("c = " +params);
  11.     return function(data){
  12.         console.log("data = " +data);
  13.     }
  14. }

  15. a(1)(2)(3)("hello"); //调用
  16. //依次打印
  17. // a = 1
  18. // b = 2
  19. // c = 3
  20. // data = hello
复制代码

还有这种 Math.random().toString(36).slice(-8); 调用
这里 Math 是一个对象,里面有一个 random 方法,random 方法返回的是一个Number对象,Number对象有一个toString()方法,toString()方法返回的是一个字符串对象,所以字符串对象有一个slice()方法。这也就是这个链式调用执行的原理。

  1. function str10(params){
  2.     return "0123456789"+params;
  3. }
  4. str10("ABCDEF").slice(-10); //6789ABCDEF
复制代码



str10 方法返回了一个字符串对象,所有的字符串对象都有slice方法,所以这个链式调用能返回长度为10的字符串



高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

Archiver|手机版|小黑屋|BBS.UBAINSYUN.COM

GMT+8, 2024-5-19 01:08 , Processed in 0.034313 second(s), 19 queries .

Powered by UBAINS! X3.4

© 2001-2017 UBAINS Inc.

快速回复 返回顶部 返回列表