gpt4 book ai didi

javascript - 为什么注释掉此代码的 alert() 行会使其失败?

转载 作者:行者123 更新时间:2023-11-29 18:34:14 24 4
gpt4 key购买 nike

我有一个非常奇怪的 javascript 问题。如果你拿下面的代码运行它,它会正常运行,没有任何错误,但是如果你注释掉第一个 alert,它会在第 5 行抛出一个错误 (var _board = Bomber. BoardFactory.getBoard();) 表示 BoardFactory 不存在(请记住,在第一个警报中,一切都在正常运行,没有错误)。我已经能够使用 Firefox 和 Chrome 重现此确切行为。

Bomber = {};

Bomber.Game = function () {
var self = {};
var _board = Bomber.BoardFactory.getBoard();

self.init = function () {};
self.start = function () {};

return self;
}

alert("2");

(function () {
var instance;

Bomber.BoardFactory = {};
Bomber.BoardFactory.getBoard = function () {
if (!instance)
instance = new Bomber.Board();
return instance;
};
})();

alert("3");

Bomber.Board = function () {
var self = {};
return self;
}

$(document).ready(function () {
var game = Bomber.Game();
game.init();
game.start();
});

我的问题是,什么可能导致这种奇怪的行为? alert 调用到底是怎么让它识别出 Bomber.BoardFactory 的?

最佳答案

我通过 jslint 运行它,修复了错误(2 个缺少分号和缺少 {} 在你的 if 上)

现在看来可以了

Bomber = {};

Bomber.Game = function () {
var self = {};
var _board = Bomber.BoardFactory.getBoard();

self.init = function () {};
self.start = function () {};

return self;
};

//alert("2");

(function () {
var instance;

Bomber.BoardFactory = {};
Bomber.BoardFactory.getBoard = function () {
if (!instance){
instance = new Bomber.Board();
}
return instance;
};
})();

//alert("3");

Bomber.Board = function () {
var self = {};
return self;
};

$(document).ready(function () {
var game = Bomber.Game();
game.init();
game.start();
});

发生的事情是你在定义 Bomber.Game 之后错过了最后一个分号,所以接下来的事情是 (function()....等等,所以它认为你正在调用功能。

如果您有警报,系统会自动插入分号以保存您。

关于javascript - 为什么注释掉此代码的 alert() 行会使其失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4824482/

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