|
本帖最后由 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[s,c];
- }
- circle_arr(5); //[78.53981633974483, 31.41592653589793 ]
复制代码
返回函数或对象实例
返回值可以是任意类型,当然也可以返回函数。
你可能看到过类似这样的函数调用 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的字符串
|
|