Javascript console.log是否不打印未定义的?

Javascript console.log是否不打印未定义的?,javascript,Javascript,我是Javascript新手。我试图用不同的例子来理解“这”在哪里是必然的。我正在使用console.log打印一些值,如下所示 function FuncObject(value) { this.answer = value; this.get_answer = function () { return this.answer; } }; var f = new FuncObject(42); var fanswer = f.get_answer;

我是Javascript新手。我试图用不同的例子来理解“这”在哪里是必然的。我正在使用console.log打印一些值,如下所示

function FuncObject(value) { 
    this.answer = value;
    this.get_answer = function () { 
       return this.answer;
    }
};

var f = new FuncObject(42);

var fanswer = f.get_answer;
console.log(fanswer())
console.log打印“函数”而不是“未定义”。document.writeln似乎打印“undefined”,这是正确的,因为它绑定到没有答案的窗口对象。现在打印功能把我弄糊涂了。现在我想知道我应该用什么来记录日志。我找不到对此的解释


感谢mohan

以防您没有注意到,您发布的代码中有一个打字错误
this.get_answer=函数

考虑到这一点,我不能完全确定你的经验水平,所以让我来介绍一下所有的基础

function FuncObject(value) { 
   this.answer = value; 
   this.get_answer = function () { 
     return this.answer; 
   } 
};

var f = new FuncObject(42);

var fanswer = f.get_answer;
console.log(fanswer())
您正在设置
fanswer=f.get\u answer
,其中
f.get\u answer
是一个函数,因此它将
fanswer
设置为函数相当于
此。get\u answer

如果希望返回
f.get\u answer
的值,则需要调用
f.get\u answer()
,该函数返回42

根据您所输入的内容,
console.log(fanswer())
会按预期打印未定义的内容。
如果您只是执行
console.log(fanswer)
操作,它会将其记录为函数,这也是预期的


我不知道你为什么会收到你在问题中所说的函数,因为我绝对不知道。

你能粘贴你正在使用的实际代码吗?如果我们想帮你的忙,请复制粘贴你的代码。对不起,我在某个地方有一个不同的日志(它自己打印),这导致了混乱。和console.log和document.writelen显然在不同的位置打印。请原谅这个新手的无知。谢谢大家的时间。你能告诉我你得到了什么答案吗?在尝试理解不同情况下“this”指的是什么的实验中,您是否同意在上面我存储对方法的引用的示例中,需要使用call fanswer进行显式绑定。应用(f)将“this”绑定到“f”。仅调用上面显示的fanswer()应该打印未定义的内容。在firefox中,如果我使用document.writeln,它将打印未定义的,console.log将打印“function”。我缺少什么?使用您提供的代码firebug不会输出console.log函数,它会打印未定义的。我无法用提供的代码重现您所说的错误,它似乎工作正常。很抱歉造成混淆。它也为我打印未定义的。我只是被另一条日志消息弄糊涂了。谢谢你抽出时间。下次我会更加小心的