Javascript 理解console.log(console.log(对象))
我是编程和js新手,我正在努力学习javascript的关键Javascript 理解console.log(console.log(对象)),javascript,Javascript,我是编程和js新手,我正在努力学习javascript的关键 var obj1 = { name: 'rawn', fn: function() { console.log(this); } }; console.log(obj1.fn()); 当我输出这个时,我得到了对象(如预期的)-{name:“rawn”,fn:ƒ},在另一行我得到了-未定义的。所以我的问题是为什么以及如何得到未定义的 我的理解是,我们正在编写这一行-console.log(obj
var obj1 = {
name: 'rawn',
fn: function() {
console.log(this);
}
};
console.log(obj1.fn());
当我输出这个时,我得到了对象(如预期的)-{name:“rawn”,fn:ƒ}
,在另一行我得到了-未定义的
。所以我的问题是为什么以及如何得到未定义的
我的理解是,我们正在编写这一行-console.log(obj1.fn())
as,console.log(console.log(this))
,那么javascript引擎如何将结果显示为undefined
(在执行上下文中什么是未定义的)?这是因为两个原因。首先,在console.log中(this)
函数中此
的上下文是对象本身。因此,它会打印出obj1
的内脏
其次,在console.log(obj1.fn())中代码>,实际上您正在调用不返回任何内容的方法。相反,如果您说console.log(obj1.fn)代码>它将返回:
ƒ(){
console.log(this);
}
希望这能有所帮助。console.log(obj1.fn())
和console.log(console.log(this))
根本不是等价的,但它们实际上有相同的结果,原因相同:内部函数不返回任何内容。这些函数的返回值为未定义
。这就是外部console.log记录的内容。您希望得到的结果是什么…?@deceze i虽然它只需将对象打印两次console.log(obj1.fn())和console.log(console.log(this)),但我认为当我在fn()中说()时,它会执行我编写的代码部分,即console.log(this)噢,是的,我不是字面意思,我是说console.log(this)
首先从obj.fn()
调用,然后调用外部控制台.log
如果函数被传递到函数console.log(),那么函数将显示传递的函数()的值。
现在我知道发生了什么!