MST

星途 面试题库

面试题:JavaScript中this关键字在不同函数调用场景下的指向

请分析以下JavaScript代码中this关键字在各个函数中的指向,并解释原因。 function outer() { console.log(this); function inner() { console.log(this); } inner(); } outer();
39.4万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. outer函数中this的指向
    • 在非严格模式下,当outer函数作为普通函数调用时,this指向全局对象(在浏览器环境中是window,在Node.js环境中是global)。这是因为在非严格模式下,普通函数调用时,函数内部的this会默认指向全局对象。
    • 在严格模式下,当outer函数作为普通函数调用时,this的值为undefined。因为严格模式下,普通函数调用时this不会默认指向全局对象。
  2. inner函数中this的指向
    • 同样在非严格模式下,inner函数作为普通函数调用(这里是在outer函数内部直接调用inner()),this指向全局对象(在浏览器环境中是window,在Node.js环境中是global)。原因和outer函数在非严格模式下作为普通函数调用时this指向全局对象一样,普通函数调用时,函数内部的this默认指向全局对象。
    • 在严格模式下,inner函数作为普通函数调用,this的值为undefined。因为严格模式下,普通函数调用时this不会默认指向全局对象。