Javascript 尝试在控制台中记录函数时未定义
我有以下代码:Javascript 尝试在控制台中记录函数时未定义,javascript,Javascript,我有以下代码: var object = { name: 'hello!', func: function(){ console.log(this); } } console.log(object.func()); 我所期望的是,每当我记录object.func时,都能看到这个对象,而这确实发生了,我可以看到这个对象。但就在预期行为之后,我得到了意外行为,undefined 结果如下: { name: 'hello!', func: [Function
var object = {
name: 'hello!',
func: function(){
console.log(this);
}
}
console.log(object.func());
我所期望的是,每当我记录object.func
时,都能看到这个对象,而这确实发生了,我可以看到这个对象。但就在预期行为之后,我得到了意外行为,undefined
结果如下:
{ name: 'hello!', func: [Function: func] }
undefined
发生这种情况的原因是什么
旁注:
我知道我在写一些我不该写的东西。但是,这仍然不能解释为什么未定义的对象.func()
不返回任何内容(因此它返回未定义的)
无需记录object.func()的结果。
您正在尝试记录一个函数的结果,该函数不返回任何内容,因此未定义。只需调用obj.func()
,因为您已经在那里处理了日志记录
或者在函数上返回一个值并记录在外部
var obj = {
name: 'hello!',
func: function(){
return this;
}
}
console.log(obj.func())
返回两行:1.{name:“hello!”,func:ƒ}
和2<代码>未定义
@zipzit您正在做一个控制台.log
两次。第一个在.func()
方法内,第二个在对象外,由于obj.func()
不返回我正在使用的函数的任何内容,因此未定义该对象<代码>返回此,而不是原始提交的内容。注意:我正在使用浏览器控制台。@zipzit如果您在浏览器的开发工具上测试此功能,那是因为console.log()
也不返回任何内容,这就是为什么浏览器在我们编写的实际的console.log(value)
之后显示未定义。如果您尝试OP提交的代码,您将得到三行结果My bad。没错。谢谢。