javascript中arguments对象简单用法

<!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">
		
		/**
		 *  arguments:
		 * 		1、对象只能在函数内部访问
		 * 		2、可以访问实际参数	
		 */	
			function test(a,b,c,d){
				if(test.length == arguments.length){
					console.log('参数完整');
				}else{
					console.log('参数不完整');
				}
				console.log(test.length);  // 4    arguments.callee.length 获取函数的形参个数
				console.log(a+b);
				console.log(arguments.length); //  2 arguments.length 获取函数实际的参数个数			
				for(var attr in arguments){  //遍历arguments对象   10 和   20
					console.log(arguments[attr]);
				}
			}
			test(10,20); //这里传递了只2个参数
		/**
		 * arguments.callee :指的是函数的本身,像一个引用一样指向函数本身
		 */
			function fact(num){
				if(num<=1){
					return 1;
				}else{
					return num*fact(num-1);//这里使用函数名进行递归
					//return num*arguments.callee(num-1); //这里使用arguments.callee()进行递归
				}
				
			}
			console.log(fact(5)); //120
			
		/**
		 * 这里告诉我们为什么最好使用arguments.callee
		 *    当函数使用函数名进行递归时,执行下面的语句会报错  ' fact is not a function'
		 * 		但是使用arguments.callee就不会报错
		 */
			var f = fact;
			fact = null;
			console.log(f(5));
			//这三句的执行分析:1 、f 被赋值了函数的引用,函数名也是一个包含了函数引用的变量
			//             2、 函数名被赋值为null,不再是函数引用
			//             当执行f(5)时,若是用函数名递归,那么就会报错‘fact is not a function’
			//			而arguments.callee一直都指向函数本身,所以最好使用这个
		</script>
		
	</head>
	<body>
	</body>
</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值