MST

星途 面试题库

面试题:JavaScript 中函数的上下文与 this:复杂嵌套函数 this 指向

阅读以下代码,请分析并说明每个函数中 this 的值是什么,以及为什么。 ```javascript const obj = { name: 'outerObj', func1: function() { console.log(this.name); const innerFunc1 = function() { console.log(this.name); }; innerFunc1(); const innerArrowFunc1 = () => { console.log(this.name); }; innerArrowFunc1(); } }; obj.func1(); ```
38.0万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. func1 函数中的 this
    • this 的值为 obj
    • 原因:在JavaScript中,当函数作为对象的方法被调用时,this 会指向该对象。这里 func1obj 的方法,通过 obj.func1() 调用,所以 this 指向 obj
  2. innerFunc1 函数中的 this
    • this 的值为 window(在浏览器环境下,在严格模式下为 undefined)。
    • 原因:innerFunc1 是一个普通函数,当它被调用时,this 的指向取决于函数的调用方式。这里它不是作为某个对象的方法调用,而是直接调用,所以在非严格模式下,this 指向全局对象 window,在严格模式下,thisundefined
  3. innerArrowFunc1 箭头函数中的 this
    • this 的值为 obj
    • 原因:箭头函数没有自己的 this,它的 this 继承自外层作用域。这里外层作用域是 func1func1 中的 this 指向 obj,所以箭头函数 innerArrowFunc1 中的 this 也指向 obj