JavaScript函数

定义函数

1.命名函数:function f(){//函数体}
2.匿名函数:var a=function(){//函数体}
命名函数被称作声明式函数;匿名函数被称作引用试函数。
也可以把函数看作一个对象来声明例:使用Function对象构造函数

var function_name=new Function(arg1,arg2,···,argN,function_body)
//arg:是函数参数;function是函数主体要只执行的代码

匿名函数通常适用于只使用一次的函数场景,对于不经常使用的函数匿名函数比较方便。

调用函数

调用函数可以通过小括号来实现。在括号内包含多个参数,参数之间通过都好进行分隔
例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			function f(){
				alert('Hello Word!')
			}
			f()
		</script>
	</body>
</html>

在这里插入图片描述

函数参数

函数参数有两种
1.形参:在函数定义时,传递给函数的参数,被称为形参
2.实参:函数被调用时,传递给函数的参数,被称为实参

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			function f(a,b){                   //a,b形参
				var c=a+b
				document.write(c)
			}
			f(10,25)                            //10,25实参
		</script>
	</body>
</html>

JavaScript不限制实参与形参的个数。但是一般来说形参与实参的个数都是相等的。
1.当实参个数比形参个数多时:这是多余的实参将被忽略
2.当形参个数比实参个数多时:假设有2个形参,调用函数时输入一个实参。这时JavaScript会把第二个实参默认为undefined。若是进行相加将会但会NaN。

防止用户随意传递参数

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			function f(a, b) {
				if (f.length != arguments.length) {
					throw new Error("实参与形参个数不一致,请重新调用函数!")
				} else {
					return a + b
				}
			}
			try {
				alert(f(10))
			} catch (e) {
				alert(e.message)
			}
		</script>
	</body>
</html>

函数应用

实际开发中函数通常作为一个表达式来进行处理,用户可以把函数值赋给变量或者作为一个参数传递给另一个函数。
1.只是用一次的匿名函数

var a=function(x,y){
	return (x+y)
}(23,24)  //返回47

2.函数作为值
将函数作为值赋给其他变量

var a=function(x,y){
	return (x+y)
}
alert(a(12,23)) //返回35

3.函数作为参数
增强函数的应用能力

var a=function(x,y){
	return (x+y)
}
var b=function(f,x,y){
	return f(x,y)
}
alert(a(b,3,5)  //返回7

4.函数作为表达式

(function(x){alert(x)})(50)

闭包函数

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

			function a(){
				var n=0
				function b(m){
					n=n+m
					return n
				}
				return b
			}
			var c=a()
			document.write(c(3))
			document.write(c(3))
			document.write(c(3))
			document.write(c(3))

在这里插入图片描述
当全局作用域反复调用内部函数时,将会不断把参数值递加给外层函数的私有变量n上,形成闭包对外部函数的私有变量做长时的保护作用。可以用来封装对象的私有属性和私有方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

覆东流

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

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

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

打赏作者

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

抵扣说明:

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

余额充值