javascript - 为什么在javascript中使用匿名函数表达式时无法访问“this”?
问题描述
我是 Javascript 的新手,在使用匿名函数表达式时只是一个关于“this”的问题。
const testFunction = function () {
this.xxx = xxx;
};
后来我称之为:
testFunction()
并且会出现错误,因为在这种情况下我们不能使用'this',
但这不是“this”指的是窗口对象吗?
解决方案
如果您的 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();
推荐阅读
- r - R Markdown 工作流将 Powerpoint 演示文稿呈现为 PDF
- c++ - 使用英特尔 PIN 修改寄存器
- node.js - 使用functions.https.onCall时如何返回一个json
- angular - 为什么它会增加我的商品数量?我的方法是在不应该这样做时添加它
- django - 如何获取上下文中的总项目以反映在 Django 列表视图中的模板中
- teradata - 选定的非聚合值必须是关联组的一部分。选择命令失败
- python - 如何从数据框中的 csv 列表创建新的 csv
- keras - ImportError:无法从“keras.optimizers”导入名称“adam”
- javascript - 将选项值传递给 onSubmit?
- javascript - 删除部分网页 URL 或简单地重定向到 Tampermonkey 中更改的 URL 的方法?