callee和caller的使用

callee

callee是arguments对象中的一个方法,功能是引用arguments所在的函数。

案例:

//命名函数
function fn(){console.log(arguments.callee)}
fn()
结果如下:
//ƒ fn(){console.log(arguments.callee)}
//匿名函数
(function(){console.log(arguments.callee)}())
结果如下:
//ƒ (){console.log(arguments.callee)}

无论是匿名函数或者是命名函数,通过arguments.callee都能引用。

arguments.callee使用

一般使用在递归中:在匿名函数中需要调用自身,可以使用arguments.callee.

案例:

	//匿名函数递归
	(function (n){
		if(n > 100){
			console.log(n) //101
			return ;
		}
		n += 2
		return arguments.callee(n)
	}(1))

	//命名函数递归
	function fnOne(a){
	if(a > 100){
		console.log(a) //101
		return ;
	}
	a += 2
	return fnOne(a) 
	}
	fnOne(1)
	
	//命名函数递归
	function fnTwo(b){
		if(b > 100){
			console.log(b) //101
			return ;
		}
		b += 2
		return arguments.callee(b)
	}
	fnTwo(1)

caller

caller是arguments.callee的一个属性。谁调用了它所处的函数,caller的值就是谁。

案例:

function a(){
	console.log(arguments.callee.caller)
}
function b(){
	a()
}
b()
打印结果如下:
//ƒ b(){
//	a()
//}

分析:因为b函数调用了a函数,所以在a函数中的arguments.callee.caller指的就是b函数.

callee和caller在严格模式下是无法使用的。

"use strict";//使用严格模式

function a(){
	console.log(arguments.callee.caller)
}
function b(){
	a()
}
b()
	

控制台报错:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值