我对编程和js很陌生,我正在努力学习javascript的关键。
var obj1 = {
name: 'rawn',
fn: function() {
console.log(this);
}
};
console.log(obj1.fn());当我输出它时,我得到对象(如预期的那样)- {name: "rawn", fn: ƒ},在另一行上得到- undefined。所以我的问题是为什么和如何得到undefined
我的理解是,我们正在编写这一行- console.log(obj1.fn()); as,console.log(console.log(this)),那么javascript引擎如何将结果作为undefined (在执行上下文中被放置为未定义的内容)?
发布于 2018-11-10 10:49:54
console.log(obj1.fn())和console.log(console.log(this))根本不是等价的,但是它们实际上有相同的结果,原因是相同的:内部函数没有return任何东西。这些函数的返回值是undefined。这就是外部console.log记录的内容。
发布于 2018-11-10 10:49:26
这是因为两个原因。首先,在console.log(this);中,this函数中的this上下文是对象本身。因此,它打印了obj1的内脏。
其次,在console.log(obj1.fn());中,您实际上是在调用什么都不返回的方法。相反,如果您说console.log(obj1.fn);,它将返回:
{ console.log(this);}
希望这能有所帮助。
https://stackoverflow.com/questions/53238138
复制相似问题