11 javascript视频教程 函数(【二】三种定义方式)

第四讲:4.2 定义函数

三种定义函数的方式:

function语句形式

函数直接量形式

通过Function构造函数形式定义函数

比较三种方式定义的区别:

 

function语句

Function构造函数

函数直接量

兼容

完全

js1.1以上

js1.2以上版本

形式

句子

表达式

表达式

名称

有名

匿名

匿名

性质

静态

动态

静态

解析时机

优先解析

顺序解析

顺序解析

作用域

具有函数的作用域

顶级函数(顶级作用域)

具有函数作用域

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>Untitled Document</title>
		<script type=text/javascript charset=utf-8>
			
			// 3种方式定义函数 
			/*
			// 1 function语句式
			function test1(){
				alert('我是test1');
			}
			//test1();
			
			// 2函数的直接量 ECMAScript
			var test2 = function(){
				alert('我是test2');
			}
			//test2();
			
			// 3function构造函数式
			var test3 = new Function("a" , "b" ,"return a+b;");
			//alert(test3(10,20));
			*/
			
			
			//效率对比
			/*
			var d1 = new Date();
			var t1 = d1.getTime();
			for(var i =0 ; i <100000;i++){
				//function test1(){;}		//function语句的形式
				var test2 = new Function();
			}
			var d2 = new Date();
			var t2 = d2.getTime();
			alert(t2 -t1); 			
			*/
			
			// 解析顺序问题 对于function语句式的函数,javascript解析器会优先的解释
			/*
			test1();
			function test1(){
				alert('1111');
			}
			*/
			
			//alert(test2); //表示变量声明了 但是没有被赋值
			
			//test2();
			/*
			var test2 = function(){
				alert('2222');
			}
			*/
			
			/*
			// 4 2 3 3 5 6
			function f(){return 1;} 				// 函数1 	
			alert(f());		//返回值为4 说明第1个函数被第4个函数覆盖	
			var f = new Function("return 2;");		// 函数2 
			alert(f());		//返回值为2 说明第4个函数被第2个函数覆盖
			var f = function(){return 3;}			// 函数3 
			alert(f());	       //返回值为3 说明第2个函数被第3个函数覆盖	
			function f(){return 4;} 				// 函数4 
			alert(f());		//返回值为3 说明第4个函数被第3个函数覆盖
			var f = new Function("return 5"); 		// 函数5 
			alert(f());	//返回值为5 说明第3个函数被第5个函数覆盖	
			var f = function(){return 6 ;}			// 函数6 
			alert(f());		//返回值为6 说明第5个函数被第6个函数覆盖			
			*/
			
			
			
			//函数作用域的概念
			/*
			var k = 1 ; 
			function t1(){
				var k = 2 ; //局部变量 k
				//function test(){return k ;} 	//function语句
				//var test = function(){ return k};	//函数直接量
				//var test = new Function('return k;');	// 构造函数的方式
				alert(test());
			}
			t1();			
			*/
			
			
			
			
		</script>
	</head>
	<body>
	</body>
</html>

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值