JS 函数的返回值及类型 函数的实参可以是任何值 立刻执行函数

目录

1.1 函数的返回值 

1.2 返回值的类型

2.1函数的实参可以是任何值

3.1 立刻执行函数 


1.1 函数的返回值 

function sum(a,b,c){
            var d = a+b+c;
            return d;   
            //return后的值将会作为函数的执行结构返回,可以定义一个变量,用来接受该结果
        }
        var number=sum(2,4,53);
        alert(number);

在函数中,return后的语句都不会执行,

        如果return语句后不跟任何值,就相当于返回一个undefined,

        如果函数中不写return,则也会返回undefined。

1.2 返回值的类型

返回值可以是任意数据类型,可以是一个对象,也可以是函数

返回值是对象时,如图

function fun(){
    var x={
        name:'张三',
        age:'24'
    };
    return x;
   }
var a=fun();
console.log(a);         //输出:[object Object]
console.log(a.name);    //输出:张三    

 返回值是函数时,如图

function fun3(){
    //在函数内部再声明一个函数
    function fun4(){
        alert('我是fun4');
    }
    //以下两个return为二选一
    return fun4;  
    /*
        将fun4函数对象作为返回值返回
        输出:fun4(){
        alert('我是fun4');
    }
    */
   return fun4();
   /*
    返回函数的返回值,屏幕输出:我是fun4
   */
}
var b=fun3();
console.log(b);


---------------下列代码为return2分支后的代码----------
a = fun3();
a();          //屏幕输出:我是fun4
fun3()();    //等同与a();  屏幕输出:我是fun4
/*逻辑均为:函数名+() 返回这个函数的返回值,
            fun3的返回值是fun4,所以fun3()=fun4,又因为fun4的返回值为“我是fun4”,所以fun3()()="我是fun4"
*/

2.1函数的实参可以是任何值

1.实参可以是任意的数据类型,,可以是一个对象,也可以是一个函数

在参数较少时,可以在函数头写入参数,来控制参数的使用(如下图

//定义函数,判断是否为偶数
function ou(nmu){
    return num % 2 == 0;        
    //return本身具有判断意义,不用再写if语句
}
var number = ou(16);
console.log(number);

 /*定义函数,根据半径计算圆的面积,并返回计算结果*/
function area(r){
     return 3.14*r*r;
}

2.参数可以是对象:当参数过多时,可以将参数封装到对象中,然后通过对象传递

//o为形参
function jieshao(o){
            console.log(o);
            console.log('我叫'+o.name+',年龄'+o.age+',性别'+o.sex+',家住'+o.addres);
        }
//obj为实参
var obj={
            name:'张三',
            age:24,
            sex:'男',
            addres:'疯头村'
        }
        jieshao(obj);   //将obj作为jieshao的实际参数传入

3.参数可以是函数(函数是有功能的对象)

function text(x){
            console.log(x);
        }
text(jieshao);
   /*
     输出:ƒ jieshao(o){
            console.log(o);
            console.log('我叫'+o.name+',年龄'+o.age+',性别'+o.sex+',家住'+o.addres);
        }
        */
text(jieshao());            /* 输出:undefined*/
text(function(){});        /*此时的x为匿名函数*/



---------------------------------------分割线------------------------
function jieshao(o){
        console.log('我叫'+o.name+',年龄'+o.age+',性别'+o.sex+',家住'+o.addres);
    }
var obj={
        name:'张三',
        age:24,
        sex:'男',
        addres:'疯头村'
    }
function text(x){
        x(obj);
    }
 text(jieshao);    /*输出:我叫张三,年龄24,性别男,家住疯头村*/
/*text函数的形参为jieshao函数,实参为text函数内的obj对象,*/

重点: 

text(area);                        //函数对象,即将对象赋值给x(相当于直接使用函数对象

text(area());                  //调用函数,相当于使用函数的返回值


3.1 立刻执行函数 

        函数定义完,立即被调用,这种函数叫做立即执行函数,立即执行函数往往只会执行一次。

(function( ){

        alert("我是匿名函数");  })( );                       //格式为: 函数对象( );

eg:

(function (a,b){
            console.log("a="+a);
            console.log("b="+b);
        })(123,125);


//输出a=123,b=125

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值