pidtfork 发表于 2020-10-28 18:05:12

函数返回一个或多个值

本帖最后由 pidtfork 于 2020-10-28 18:07 编辑

函数返回一个或多个值

返回值


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


返回一个值

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

function sum(num1,num2) {
    varvalue = num1 + num2;
    returnvalue;//返回一个值
}
sum(10,50); //60

function add(num1,num2){
    returnnum1 + num2;//返回一个值,表达式会在返回前解析运算
    //等价sum方法
}

返回2个或者多个值


可以通过返回一个对象或者数组的方式,来返回多个值,使用的较多的是用对象的方式返回数据。下面例子是一个根据传入圆的半径,返回圆的周长和圆的面积。
function circle(r){
    vars,c;
    s = Math.PI*r*r;
    c = 2*Math.PI*r;
    return{
      s:s,
      c:c
    }
}
varobj = circle(5); //{ s: 78.53981633974483, c:31.41592653589793 }
obj.s   //78.53981633974483
obj.c//31.41592653589793
function circle_arr(r){
    vars,c;
    s = Math.PI*r*r;
    c = 2*Math.PI*r;
    return;
}
circle_arr(5);   //


返回函数或对象实例

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


function a(params){
    console.log("a = " +params);
    returnb;
}
function b(params){
    console.log("b = "+ params);
    returnc;
}
function c(params){
    console.log("c = " +params);
    return function(data){
      console.log("data = " +data);
    }
}

a(1)(2)(3)("hello"); //调用
//依次打印
// a = 1
// b = 2
// c = 3
// data = hello
还有这种 Math.random().toString(36).slice(-8); 调用
这里 Math 是一个对象,里面有一个 random 方法,random 方法返回的是一个Number对象,Number对象有一个toString()方法,toString()方法返回的是一个字符串对象,所以字符串对象有一个slice()方法。这也就是这个链式调用执行的原理。

function str10(params){
    return "0123456789"+params;
}
str10("ABCDEF").slice(-10); //6789ABCDEF


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



页: [1]
查看完整版本: 函数返回一个或多个值