首页 > 解决方案 > 为什么在javascript中使用匿名函数表达式时无法访问“this”?

问题描述

我是 Javascript 的新手,在使用匿名函数表达式时只是一个关于“this”的问题。

const testFunction = function () {
   this.xxx = xxx;
};

后来我称之为:

testFunction()

并且会出现错误,因为在这种情况下我们不能使用'this',

但这不是“this”指的是窗口对象吗?

标签: javascript

解决方案


如果您的 JavaScript 在 Web 浏览器中运行,则在默认情况下,this window对象。

const testFunction = function() {
  console.log(this === window);
};

testFunction();

如果启用了严格模式,则不会。

自动装箱不仅会降低性能成本,而且在浏览器中公开全局对象也是一种安全隐患,因为全局对象提供了对“安全”JavaScript 环境必须限制的功能的访问。因此,对于严格模式函数,指定的 this 不会被装箱到对象中,如果未指定,则 this 将是未定义的:

"use strict";
const testFunction = function() {
  console.log(this === window);
};

testFunction();


推荐阅读