javascript - JS 中的这种操作

标签 javascript

我写了一段代码,但我不明白为什么它会打印未定义。 我期待看到“oops,global”,因为对 foo 的调用不是来自对象,所以它必须来自全局范围,这意味着 this 引用全局这个

我哪里错了?

var obj1 = {
    a123: 2,
    foo: function() {
        // console.log(this); obj1 is not in this. why?
        console.log(this.a123);
    }
};

var a123 = "oops, global";
var f = obj1.foo;
f(); // prints undefined. why? should have printed "oops, global"

我正在使用 nodejs 在 IntelliJ 中运行代码。

最佳答案

因为在 Node js 中,如果您在外部范围内,这意味着 module.export 。在浏览器中这意味着窗口。这就是区别。

看这个 Meaning of "this" in node.js modules and functions

关于javascript - JS 中的这种操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51178112/

相关文章:

javascript - 基于数组按 ids 组织列表 - jQuery/JS

javascript - 对 Angular 和 NgRx 中的嵌套状态变化使用react

javascript - 将模型变量放入js代码中

javascript - 将函数的副本分配给 var

javascript - Twitter Bootstrap 工具提示不起作用

javascript - 如何从通用 javascript 引用 React 类

JavaScript 只运行最后一个函数

javascript - 显示 JavaScript 值

javascript - 强制 “landscape” 方向模式

javascript - Three.js - 更新的几何体不是渲染变化