js中callee和caller

本文深入解析JavaScript中的callee关键字,阐述其在函数内部引用自身的作用,通过实例展示如何利用callee降低代码耦合度,提高代码的健壮性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js中callee关键字的作用
  1. callee关键字的定义:在函数内部使用,代表当前函数的引用(名字)。

  2. 作用:降低代码的耦合度。

  3. 耦合度的定义:一处代码的修改会导致其他代码也要发生改变(耦合度高)在项目里边要开发低耦合度的代码(一处代码修改尽量少地引起其他代码的变化)。

  4. 语法结构

    function f1(){arguments.callee();}
    f1();
    

实例

<script type="text/javascript">
        function jiecheng(n){
            if(n==1){
                return 1;
            }
            //return n * jiecheng(n-1);
            //callee可以保证外部名称的变化,不会引起内部代码的修改,代码耦合度降低
            return n * arguments.callee(n-1);
        }
        //要把jiecheng名称换成其他的名字进行使用

        var jc = jiecheng; //对象赋值,其为引用传递

        jiecheng = null;  //销毁jiecheng函数对象,后期不使用了
        console.log(jc(4)); //输出24
        var jd = jc;
        jc = null;
        console.log(jd(6)); //输出720
</script>

callee返回正在执行的函数本身的引用。callee是arguments的一个属性,这个属性是一个指针,指向这个拥有arguments对象的函数,(arguments是调用函数,那么这个callee就是调用函数的啦)

caller
  1. 函数fun的caller返回调用fun的函数对象,即fun的执行环境,如果fun的执行环境为window则返回null;

    function fun(){
    	console.log(argument.callee.caller);
    	//argument.callee.caller必须写在fun中,
    	//因为argument,caller只在执行时才有效。
    }
    fun(); 
    //结果为null
    
    function a(){
        fun();
        function fun(){
            console.log(fun.caller)//这里必须写在fun里面,因为caller只有函数执行过程中才有效
        }
    }
    a();
    

    结果为: a函数
    这里写图片描述

    完整项目实例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值