我不明白为什么我的JS函数会导致错误

时间:2018-10-20 15:43:05

标签: javascript

我正在学习Javascript,但我不明白为什么此JS函数会导致错误。

function fun(){
    console.log('foo');
    return {
      fun: function(){
        fun();
      }
    };
}

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

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

乐趣()。

1 个答案:

答案 0 :(得分:1)

每次调用不返回某些内容的函数时,JavaScript运行时始终提供默认返回。默认返回值为undefined。因此,当您第三次尝试调用'fun()'时,会尝试查找一个名为'fun'的对象属性,但是上一次调用只是返回undefined-因此:无法读取该属性未定义的“有趣”

因此,请尝试以下操作:

function fun(){
    console.log('foo');
    return {
      fun: function(){
        return fun();
      }
    };
}

fun().fun();

fun().fun().fun(); 

这将返回函数调用的输出-这是预期的对象。