JavaScript 函数

JavaScript函数

JavaScript是函数式编程语言,在JavaScript脚本种可以随处看到函数,函数构成了JavaScript源码的主体。

1.函数是命名的独立的语句段,这个语句段可以被当作一个整体来引用和执行:

格式:

function 函数名(形式参数){函数体}
调用函数:函数名(实际参数);

函数只有被调用后才会执行

2、如果函数需要返回值、直接使用return 返回、不会像java一样要考虑返回值的类型

<script type="text/javascript">
 
    // 定义一个函数 : function
    function demo2() {
        return 666;
    }
 
    // 调用函数 :
    alert(demo2());
 
</script>

注意:

一个函数可以包含多个return语句,但是在调用函数时只有第一个return语句被执行,且该return语句后面的表达式的值作为函数的的返回值被返回,return语句后面的代码将被忽略。
函数的返回值没有类型限制,它可以返回任意类型的值。
函数调用的方法还有new运算符、call或apply动态调用等方法。
函数参数

1.函数参数

1、参数可以分为两种:形参和实参

形参:在定义函数时,传递给函数的参数,被称为形参,即形式上参数
实参:当函数被调用时,传给函数的参数,这些参数被称为实参
示例:a,b为形参,23,24为实参

function add(a,b){
	return a + b;
}
alert(add(12,34));

2、一般情况下,函数的形参和实参个数是相等的,但是JavaScript没有规定两者必须相等。如果形参数大于实参数,则多出的形参值为undefined;相反如果实参大于形参数,则多出的实参就无法被形参变量访问,从而被忽略掉。

示例:

function add(a, b){
	return a + b;
}
alert(add(2)); //返回undefined与2相加的值,即为NaN

```JavaScript定义了arguments对象,例用该对象可以快速操纵函数的实质。使用arguments.length可以获取函数实参的个数,使用数组下表(arguments[n])可以获取实际传递给含食宿的每个参数。

示例:

```javascript
<script>
	function add(a, b){
		if(add.length != arguments.length) //检测形参和实参是否一致
			throw new Error("实参与形参不一致,请重新调用函数!");
		else	
			return a + b;
	}
	try{
		alert(add(2));//尝试调用函数
	}catch(e){
		alert(e.message);//捕获异常信息
	}
</script>

3、如果函数需要传递参数、不需要指定参数的类型、直接使用变量即可

<script type="text/javascript">
 
    // 定义一个函数 : function
    function demo3(a, b) {
        return a + b;
    }
 
    // 调用函数 :
    alert(demo3(10, 20));//显示30
 
</script>

4、js中出现二个重名的函数名、后者会把前面的覆盖掉

对比java、java有重载(同名不同参)、重写(同名同参同返回值类型、方法体不一样)

演示:

<script type="text/javascript">
 
    // 定义一个函数 : function
    function demo4(a, b) {
        alert("调用1...");
    }
 
   function demo4() {
       alert("调用2...");
   }
 
    demo4(10, 20);
    demo4();
 
</script>

2.匿名函数

1、匿名函数就是没有名称的函数,它相当于一个复杂的表达式。当只需要一次性使用函数时,使用匿名函数会更加有效率。

示例:匿名函数被调用之后,被赋予给变量z。

var z = function(x, y){
	return (x + y) / 2;
}(23, 35);

function(形式参数){函数体}
调用方式:将匿名函数赋值给一个变量,通过变量名调用函数
定义函数并赋值给变量:var fn = function(形式参数){函数体}
调用函数:fn(实际参数);


<script type="text/javascript">
 
    // 匿名函数 : 没有名称的函数
    var func = function(i, u) {
        alert(i + " love " + u);
    }
 
    // 调用函数 :
   func("柳岩", "小白");//显示柳岩love小白
 
</script>


3.函数作为值

1、函数实际也是一种结构复杂的数据,因此可以把它作为值赋给其它变量

示例:

var a = function(x, y){
	return (x + y) / 2;
}
alert(a(12, 33));//返回22.5

4.函数作为参数

1、函数作为值可以进行传递,因此可以把函数作为参数传递给另一个函数,也可以作为返回值。
示例:

var a = function(f, x, y){
	return f(x, y);
};
var b = function(x, y){
	return x + y;
};
alert( a(b, 3, 4) );

5.函数作为表达式

1、函数既然可以当作值来使用,因此也可以参与到表达式运算中。
示例:

var a = function(x){
	alert(x);
}
a(50);//提示为50

//针对上面的写法,可以直接使用表达式来编写:
(function(x){
	alert(x);
})(50);//提示为50

6.闭包函数

1、闭包函数是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

2、闭包函数就是外部函数被调用后,它的变量不会消失,仍然被内部函数所使用,而且所有的内部函数都拥有对外部函数的访问权限。

示例:定义一个函数a,该函数包含一个私有函数b。内部函数b把自身参数m递加给外层函数的私有变量n上,然后返回n的值。外层函数a的返回值为内部函数b,从而形成了一种内层引用外层的闭包关系,于是外层函数就是一个典型的闭包函数

<script>
	function a(){				//外层函数,闭包函数
		var n = 0;				//私有变量
		function b(m){			//内部函数,私有函数
			n = n + m;			//递加上级私有变量的值
			return n;			//返回改变后的值
		}
		return b;				//返回私有函数
	}
	var b = a();				//调用外层函数,返回内部函数
	document.write(b(3));		//输出3
	document.write("<br>");
	document.write(b(3));		//输出6
	document.write("<br>");
	document.write(b(3));		//输出9
	document.write("<br>");
	document.write(b(3));		//输出12
</script>

3、这样当在全局作用域中反复调用内部函数时,将会不断把参数值递加给外层函数的私有变量n身上,形成闭包对外部函数的私有变量长时保护作用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值