gpt4 book ai didi

javascript - 全局 JS 变量的令人困惑的未捕获引用错误

转载 作者:行者123 更新时间:2023-11-28 02:23:12 24 4
gpt4 key购买 nike

在我尝试为我的代码命名空间并在 Rails 项目中有 2 个 CoffeeScript 文件生成此文件之前:

(function(){
window.Investments = {};
}).call(this);

然后我的 Backbone 集合:

(function(){
Investments.InfrastructureCollection = Backbone.Collection.extend({});
}).call(this);

chrome 中的控制台抛出一个 Uncaught ReferenceError :投资未定义,我在页面加载时设置了基础设施集合,但一切似乎都执行良好,并且按预期加载。我什至可以创建该集合的新实例并在控制台中添加模型,而无需进行任何设置。控制台中发生了什么引发错误?

最佳答案

首先要检查的是看看这是否有效:

var Investments = {};
Investments.InfrastructureCollection = Backbone.Collection.extend({});

没有周围的所有其他东西。然后,如果这不起作用,那么看看这是否有效:

window.Investments = {};
window.Investments.InfrastructureCollection = Backbone.Collection.extend({});

这些将验证您的 .Investments 对象的创建是否到位或者是否存在问题。

最后,我认为没有理由在两个单独的实例中执行所有这些操作:

(function(){

}).call(this);

立即执行的函数通常用于创建隐私或局部变量的临时作用域,但您没有这些,因此不需要它。其次,为什么要使用.call(this)。同样,这是额外的代码量,根本没有以任何方式使用。如果您希望 this 保持原样,那么首先删除立即执行的功能 block 即可。

如果您仍然无法弄清楚这一点,那么请尝试在 jsFiddle 中创建一个简单的可重现示例,以便我们可以更准确地了解正在发生的情况。

关于javascript - 全局 JS 变量的令人困惑的未捕获引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15343782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com