"use strict"
function hello(){
console.log(this);
}
hello(); // undefined
window.hello(); // window object
我试图创建一个简单的 hello 函数来在严格模式下打印此关键字的值。 我在正常函数调用时未定义。 当我使用 window 对象调用该函数时,this 关键字的值为 window 对象。
想知道幕后发生了什么。
在 JavaScript 中,函数内 this 的值取决于函数的调用方式。您在严格模式下使用 hello 函数观察到的行为说明了 JavaScript 执行上下文和 this 绑定的一些基本概念。
当您直接调用 hello() 时,您将以独立的方式调用该函数,无需显式设置上下文对象(点前没有对象),在这种情况下,“this”默认为全局对象(window in浏览器)。然而,在严格模式下,这并不默认为全局对象。
相反,它仍然是未定义的,以防止与全局范围的意外交互,这是一种更安全、更可预测的行为。这就是为什么您会看到在严格模式下打印 undefined 。