JavaScript——函数详解(创建函数三种方式,函数参数,返回值,立即执行函数)

函数定义

       前面说,在JS中除了原始类型都是对象,与此类推,函数也是一个对象

与普通对象区别

       可以封装某一些功能(代码),在需要时执行

 


创建函数的三种方式


一、new运算符创建函数(此方法开发禁止使用,只是为了说明函数是一个对象)

var fun1 = new Function("console.log('这是一个函数')");

fun1();

console.log(fun1);

输出结果:

fun1()与fun1的区别:

fun1():调用函数——语法:函数对象名();

fun1:函数对象;

二、使用函数声明创建函数

语法:

function 函数名([形参1,形参2,...形参N]){
                语句
            }

举例:

function fun2(){
  console.log("这是我第二个函数");
}

fun2();

console.log(fun2);

输出结果:

三、使用函数表达式来创建一个函数

语法:

var 函数名 = function([形参1,形参2,...形参N]){
	语句;
}

此时等号右边为匿名函数,赋值给函数变量,所以为函数表达式

举例:

 var fun3=function(){
	 console.log("这是我第三个函数");
 }
 fun3();

输出结果:


函数参数——形参与实参


形参

形式参数,可以在函数的()中来指定一个或多个形参,多个形参之间使用,隔开

声明形参就相当于在函数内部声明了对应的变量,但是并不赋值

举例说明:

function sum(a,b){
   console.log(a+b);
}

与此效果相同的代码(在使用的时候不能这么写,接收不了外部实参)

function sum(){
	var a;
	var b;
   console.log(a+b);
}

此时a,b便为形参

 

实参

在调用函数时,可以在()中指定实参(实际参数),实参将会赋值给函数中对应的形参

举例:调用上面的函数

sum(1,2);

此时1,2便为实参


实参的值可以是一个对象,也可以是一个函数


实参的值是一个对象

适用情况(大多数都适用):当参数过多时,可以将参数封装到一个对象中,然后通过对象传递

举例:输出一个人的信息

function sayHello(name,age,gender,address){
	console.log("我是"+name+",今年我"+age+"岁了,"+"性别是"+gender+",地址是"+address)
}

//调用函数
sayHello("小工",15,'男',"中国");

将参数(name,age,gender,address)用对象obj封装起来,传入对象

function sayHi(o){
	console.log("我是"+o.name+",今年我"+o.age+"岁了,"+"性别是"+o.gender+",我住在"+o.address);
}

//封装对象
var obj={
	name:"小工",
	age:15,
	gender:'男',
	address:"中国"
}

//调用函数
sayHi(obj);

这两种的输出结果一致

 

实参的值是一个函数

举例:将sayHi函数对象传入另一个函数

function fun(a){
   a(obj);
}


fun(sayHi);

与直接调用sayHi()函数输出结果一致

可以这么理解:sayHi对象中存放sayHi函数的指针(地址值),将指针传给a后,a有sayHi函数的地址,可以直接调用sayHi函数


返回值


用return来设置函数返回值

语法: return 值;

值可以是任意的数据类型,下面举三个例子——返回原始数据类型:number、返回一个对象、返回一个函数

返回number

function sum(a,b,c){
	var d=a+b+c;
	return d;
}
//调用函数
var result= sum(1,2,3);
console.log(result);

 

返回一个对象

function fun2(){
   
   //返回一个对象
   return {name:"沙和尚"};
}

//变量a接收
var a = fun2();

//输出a.name
console.log("名字是"+a.name);

 

返回一个函数对象返回(fun4函数指针)

function fun3(){
   //在函数内部声明一个函数
   function fun4(){
	   console.log("我是fun4");
   }
   //将函数对象返回
   return fun4;
}

调用fun3执行fun4函数

//用变量b接收fun4指针
var b= fun3();
b();

或者直接使用
fun3()();

输出结果:我是fun4

 

返回一个函数(fun4())

function fun3(){
   
    //在函数内部声明一个函数
   function fun4(){
	   console.log("我是fun4");
   }
   
    //将函数返回
   return fun4();
}

//调用fun3函数
fun3();

立即执行函数


将匿名函数用()括起来之后变为一个立即执行函数,函数只会被调用一次

举例:

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

总结


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿成长轨迹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值