我正在学习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
乐趣()。
答案 0 :(得分:1)
每次调用不返回某些内容的函数时,JavaScript运行时始终提供默认返回。默认返回值为undefined
。因此,当您第三次尝试调用'fun()'时,会尝试查找一个名为'fun'的对象属性,但是上一次调用只是返回undefined
-因此:无法读取该属性未定义的“有趣”
因此,请尝试以下操作:
function fun(){
console.log('foo');
return {
fun: function(){
return fun();
}
};
}
fun().fun();
fun().fun().fun();
这将返回函数调用的输出-这是预期的对象。