JavaScript教程(八)javascript中函数(function)

1.概念:
重复执行的代码块或者说函数是事件驱动的重复执行的代码块.
2.函数的定义:
语法结构:function 函数名称遵循命名规则(){
函数体
}
例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script type="text/javascript">
			//实现But_click函数
			function But_click(){
				alert('被点击时触发了点击事件,并调用了函数But_click');
			}
		</script>
	</head>
	<body>
		<!--在点击的时候调用了一个函数名称为But_click的函数-->
		<button onclick="But_click();">点击试试</button>
		<button onclick="But_click();">第二次点击还是会调用函数</button>//可以多次调用
	</body>
</html>

(1)不指定函数名称/匿名函数:顾名思义就是没有名字的函数
结构:Function(参数 1,参数 2,…,参数 n){ //函数的主体语句 }
function(){}为错误的定义

<script type="text/javascript">
			//由事件驱动onload,执行重复代码块(匿名函数)
			window.onload=function(){
				//alert('加载事件驱动匿名函数')
				
				//函数之中嵌套函数
				//匿名函数的定义
				var myfunction=function(){
					alert('这是一个匿名函数,你调用了');
				}
				//如何调用匿名函数
//				alert(myfunction());//先输出的是函数的主体然后输出的是undefined
//				alert(myfunction);//错误的,将函数直接输出,函数并没有被调用既没有执行
				myfunction();//正确的调用方法,因为不能将函数当做一个值输出,只有这种形式才可以调用函数.从而执行函数体
				//查看数据类型
//				alert(typeof myfunction);//返回结果为function类型(复杂的数据类型)
			}
			
</script>

函数的调用:
i.事件的驱动进行调用函数
ii.自己调用
注:如果我们只定义函数,并没有调用函数,则函数本身是不会执行的.
(2)具备名称的函数:
结构:语法: function函数名(参数 1,参数 2,….,参数 n){ return 表达式; //函数体语句 }

<script type="text/javascript">
	function myFunction(){
				document.write('这是一个有名称的函数:myFunction()');
			}
	myFunction();	//自己调用	
</script>
<body>
	<button id="btn">点击1</button>
	<script type="text/javascript">
		var btn1=document.getElementById('btn');
//		btn1.onclick=函数(有名称的函数/匿名函数)
		//btn1.onclick=function(){} //点击事件驱动匿名函数执行
		btn1.onclick=btn;  //直接调用函数的名称就行,不需要添加括号
		function btn(){  //创建了一个触发点击事件后要执行的行为(函数)
			alert('点击按钮调用了有名称的函数');
		}
	</script>
</body>

3.定义一个带有参数的函数.
概念:function 函数名称(参数1,参数2…){函数体}

<script type="text/javascript">
	function test1(a){//形参
		document.write(a);
	}
	test1(20)//实参
</script>
<script type="text/javascript">
	function test2(a,b){//形参
		document.write(a+b);
	}
	test2(2,5);//(实参)//形参和实参必须对应,输出结果为7
</script>

注:总之可以理解为定义函数时的参数叫’形参’,调用函数时的参数为’实参’.
例:用户手动输入两个数字,判断两个数字的大小,如果a>b,则返回1,否则返回-1,相等返回0,使用函数解决问题

<script type="text/javascript">
	var mess1=prompt('请输入第一个数字:');
	var mess2=prompt('请输入第二个数字:');
	var num1=parseFloat(mess1);
	var num2=parseFloat(mess2);
	//传统方式
//	if(num1>num2){
//		document.write(1);
//	}else if(num1==num2){
//		document.write(0);
//	}else{
//		document.write(-1);
//	}
	//函数
	function NumberBj(num1,num2){
		if(num1>num2){
			document.write(1);
		}else if(num1==num2){
			document.write(0);
		}else{
			document.write(-1);
		}
	}
	NumberBj(num1,num2);//这个函数用来比较两个数字大小的,可多次调用
</script>

4.带有返回值的函数

<script type="text/javascript">
	//带有返回值 : 使用关键字return
	var a=5,b=12;
	function test1(a1,b1){
		return a1+b1;
	}
//	test1(a,b);//传递的是实参
	var sum=test1(a,b);
	alert(sum);//结果为17
</script>
<script type="text/javascript">
	//比较两个数字的大小,a>b返回1,否则返回-1,相等则返回0
	var a=3,b=2;
	function test2(a,b){
		if(a>b){
			return 1;
		}else if(a<b){
			return -1;
		}else{
			return 0;
		}
	}
	var num=test2(a,b);
	alert(num);//结果为1
</script>

5.全局变量: 在整个程序中,所有的函数都可以访问到的变量,或者是写在对象底下的变量.

<script type="text/javascript">
	window.onload=function(){
		var name='张三';
		var age=34;
		var job='软件开发';
		var money=8000.56;
		function myTest1(){
			document.write('我是第一个函数调用变量name为'+name);
		}
		myTest1();
//		function myTest1(name1){
//			document.write('我是第一个函数调用变量name为'+name1);
//		}
//		myTest1(name);
		function myTest2(){
			document.write('我是第二个函数也可以调用变量name为'+name);
		}
		myTest2();
		//注:以上两个函数都可以访问变量name的值,所以把name 称之为全局变量
	}
</script>

6.局部变量

<script type="text/javascript">
	//var num1=20;
	window.onload=function(){
		function test1(){
			//var num1=20;
			 num1=20;//去掉var
		}
		function test2(){
			document.write('使用test2函数访问 test1函数中的变量num1='+num1);
		}
		test1();
		test2();//在调用test2函数的时候,访问test1中的变量num1无效,原因是num1作用于test1函数
	}//会发现在test2中无法调用test1的num1,
	//在一个函数体中如何将一个局部变量转换为全局变量?
	// 只需要将这个函数体中的定义变脸搞得关键字var 去掉或写在事件外边
</script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

豆皮没有豆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值