JavaScript 的函数

JavaScript 的函数

定义:函数是指封装一些语句代码的一个对象。一次声明,可多次调用。
函数是一个对象。

创建函数的3种方式

  1. 使用构造函数来创建,不推荐使用。
var fun = new Function();

这时候创建的是一个空的函数,既没有任何功能的函数。为了使函数拥有功能,可以将一些代码以字符串的形式作为参数,初始化函数。

var fun = new Function("alert('函数');");

这个函数的功能是弹出一个窗口。

  1. 使用函数声明来创建
    语法:function 函数名([形参1,形参2,...,形参N]){ 语句 }
function fun(){
	alert("函数声明");
}
  1. 使用函数表达式来创建
    语法: var 函数名=function([形参1,形参2,...,形参N]){ 语句 };
var fun = function(){
	console.log("haha");
};

函数创建后,并不会立刻执行,需要调用函数才执行。

调用函数

语法:函数名([形参1,形参2,...,形参N]);

fun();

函数的参数

  • 形参:形式参数
  • 实参:实际参数
  1. 调用函数时,通过实参给函数传值,实参将值赋给形参进行计算。
  2. 调用函数时,浏览器解析器不会检查实参类型,最好在函数内加于判断实参类型,避免出现错误。
  3. 调用函数时,浏览器解析器不会检查实参个数,当实参多于形参时,后面多余的实参不会参与赋值,直接忽略;形参多于实参时,多余的形参赋值为 undefined 类型。
  4. 实参可以是任意类型的数据。

函数的返回值

语法:return 返回值;
返回值是该函数执行后返回的结果。可以是任意类型的数据。
通常放在函数的最后。因为执行到 return 语句将结束该函数了,如果 return 语句后还有语句,这些语句将会变成死语句(永远不会执行)了。
一个函数可以有多个返回接口,但是尽量使用变量赋值的形式,只写一个返回接口,这便于理解函数功能。
如果 return 后没有返回值,或函数没有 return 语句,该函数的返回结果都是 undefined 。

函数是一个具有特定功能的对象。

前面说到了函数是一个对象,函数的参数可以是任意类型的数据。所以函数的参数也可以是一个对象或函数。

参数是对象的例子:

function showMsg(x){		//展示一个对象的信息
	console.log(x.name);
	console.log(x.age);
	console.log(x.gender);
}
var obj = {
	name:"lin",
	age:18,
	gender:"男"
}
showMsg(obj);

参数是函数的例子:

function showMsg(x){		//展示一个对象的信息
	console.log(x.name);
	console.log(x.age);
	console.log(x.gender);
}
function fun(x){
	console.log(x);
}
fun(showMsg);

当将函数 A 当成一个实参传入函数 B 时,可以在函数 B 中,执行函数 A 。如:

function showMsg(x){		//展示一个对象的信息
	console.log(x.name);
	console.log(x.age);
	console.log(x.gender);
}
var obj = {			//声明一个对象
	name:"lin",
	age:18,
	gender:"男"
}
function fun(x){
	x(obj);         //调用传入的函数 A
}
fun(showMsg);		//调用函数 B
//fun(showMsg(obj));	//相当于直接调用了 showMsg 函数,这时候形参x接收的是 showMsg 函数的返回值 undefined。

函数的返回值也可以是任意类型的数据。当函数的返回值是一个函数时,如何调用返回的函数。

function fun1(){
	alert("我是外部函数1");
	function fun2(){
		alert("我是内部函数2");
	}
	//fun2();	 //在fun1中调用fun2
	return fun2;	//返回一个函数
}
var a = fun1();		//将fun1返回的函数赋给a,a等价于fun2
console.log(a);
a();		//相当于调用fun2
//fun1()(); //等价于调用了 fun1 和 a 函数

注意:函数名函数名() 的区别

函数名只是指函数的本体代码。
函数名()调用了这个函数,指的是执行这个函数的返回值。

立即执行函数

语法:

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

立即执行函数声明时即调用,通常是匿名函数,只调用一次。

(function(x,y){
	console.log( "x = " + x);
	console.log( "y = " + y);
})(123,456);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值