javascript创建函数的三种方式

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<script type="text/javascript" charset="UTF-8">
			
	/**
	 * 函数的3种创建方法
	 */
			//1、语句式   
			function test(a,b){
				return a+b;
			}
			console.log(test(1,2));
						
			//2、直接量式
			var test1 = function(a,b){
				return a+b;
			}
			console.log(test1(3,4));
			
			//3、构造函数式
			
			var test2 = new Function('a','b','return a+b;');			
			console.log(test2(2,4)); 
			
	/**
	 * 三种方式的解析顺序
	 */		
	
			test3();
			function test3(){
				console.log('我是test3,语句式创建的');
			}
			
			//test4(); //出错,因为test4只是被声明为全局变量,可是还没有赋值
			var test4 = function(){
				console.log('我是test4,直接量方式创建的');
			}
			test4();
			// test5(); //出错,因为test5只是被声明为全局变量,可是还没有赋值
			var test5 = new Function("console.log('我是test5 ,构造函数式创建的')");//解析顺序和直接量方式一样(顺序解析)
			test5();
			
	/**
	 *  三种方式的效率
	 */
			
			var d1 = new Date();
			var t1 = d1.getTime();
			for(var i=0;i<100000;i++){
				// function test6(){;};// 语句式其次
			    // var test7 = function(){;};//直接量式最快
				//var test8 = new Function();// 构造函数式最慢
			}
			var d2 = new Date();
			var t2 = d2.getTime();
			console.log(t2-t1);
			
			
	/**
	 * 三种方式的作用域
	 */		
			var k=1;//当这里的k注释掉时,构造函数式会报错找不到k
			function t1(){
				var k=2;
				//function demo(){console.log(k);};// 2
				//var demo = function(){console.log(k)};// 2
				var demo = new Function('console.log(k)');// 1   构造函数式 定义的函数相当于全局,看不见函数内的k,(顶级作用域)
				demo();
			}
			t1();
			
		</script>
		
	</head>
	<body>
	</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值