我是编程和js的新手,我正在尝试学习javascript的关键。

var obj1 = {
    name: 'rawn',
    fn: function() {
        console.log(this);
    }
};
console.log(obj1.fn());


当我输出时,我得到对象(如预期)-{name: "rawn", fn: ƒ},在另一行我得到-undefined。所以我的问题是为什么以及如何获得undefined

我的理解是,我们正在编写此行-console.log(obj1.fn());为,console.log(console.log(this)),那么javascript引擎如何将结果作为undefined给出(在执行上下文中未定义的内容)?

最佳答案

console.log(obj1.fn())console.log(console.log(this))根本不是等效的,但是由于相同的原因,它们实际上具有相同的结果:内部函数什么都不return。这些函数的返回值为undefined。这是外部console.log记录的内容。

09-17 18:17