在严格模式(strict mode)下,如果你直接在全局作用域中定义一个函数,并在该函数内部使用 this
关键字,那么 this
的值将是 undefined
,而不是全局对象(在浏览器环境中,全局对象通常是 window
)。
这是因为严格模式对 this
的绑定做了更严格的限制,以避免一些常见的错误和误用。在非严格模式下,全局作用域中的函数内部的 this
会默认指向全局对象,这有时会导致一些难以追踪的问题。
下面是一个示例代码,展示了在严格模式下全局作用域中函数的 this
值:
"use strict";function exampleFunction() {console.log(this); // 输出:undefined
}exampleFunction();
在这个示例中,我们使用了 "use strict";
声明来启用严格模式。然后,我们定义了一个名为 exampleFunction
的函数,并在该函数内部打印 this
的值。当我们调用 exampleFunction()
时,控制台将输出 undefined
,表明在严格模式下,全局作用域中函数的 this
值是 undefined
。