一道JavaScript函数问题

function fun(){

    console.log('foo');

    return {

      fun: function(){

        fun();

      }

    };

}

fun().fun(); // 'foo','foo'

fun().fun().fun(); // 错误:Cannot read property 'fun' of undefined

为什么会是这样的结果,JS菜鸟求解,花了好长时间都没弄明白,请赐教……

交互式爱情
浏览 668回答 2
2回答

慕桂英4014372

function fun(){    console.log('foo');    return {      fun: function(){        return fun();      }    };}改成这个样子就能无限循环了,你那个没有把返回值反出去

猛跑小猪

第一行 fun().fun() 首先执行fun() 因为里面有console.log('foo') 所以这是第一个打印然后执行下面的return 返回了个对象 然后就调用对象内的fun 然后在内部fun() 因为闭包,最外部fun不会被销毁,就会执行最外的fun 所有有了第二个打印第二行 fun().fun().fun() 前面和上面一样 也会先输出两个foo 但fun().fun() 并没有return出来东西 所以是undefined
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript