gpt4 book ai didi

javascript - 当使用 (function()) 时,JavaScript 不再工作

转载 作者:行者123 更新时间:2023-12-03 09:41:07 26 4
gpt4 key购买 nike

我对 TypeScript 还很陌生,我会尝试通过它来学习 JavaScript。由于我是一名 .NET 程序员,我可以在 TypeScript 中创建类,然后让 TypeScript 编译器神奇地将其转换为 JavaScript,毕竟我想使用 JavaScript 生成的文件。这将帮助我学习 JavaScript。

现在,我有一个简单的类,用于对方法参数执行验证。 typescript 实现如下所示:

class Guard {
static ThrowIfNull(argument, argumentName) {
if (argument == null) { throw "The argument '" + argumentName + "' cannot be null."; }
}
}

在 TypeScript Playground 上,这会生成以下 JavaScript:

var Guard = (function () {
function Guard() {
}
Guard.ThrowIfNull = function (argument, argumentName) {
if (argument == null) {
throw "The argument '" + argumentName + "' cannot be null.";
}
};
return Guard;
})();

所以,现在我确实想在我的 Web 应用程序中使用这段 JavaScript 代码,而不是 TypeScript 代码。

我创建了一个jsFiddle使其更容易理解。

现在,我在 JavaScript 中读到过,您可以更好地将所有内容包装在 function 中,如下所示:

(function() {
'use strict';

-- Code goes here.
})();

查看此JsFiddle更新的代码。但是,现在当我运行应用程序时,我收到“Guard 未定义错误”。有人可以向我解释为什么会发生这种情况吗?

我假设我必须删除 (function()) {})();那么,但这意味着我一开始就误解了这个概念,那么将所有内容包装在这样一个函数中的目的是什么?

编辑如果我删除函数包装器,那么 JShint 会产生一个错误,告诉我应该使用“use strict”的表单函数。

感谢您帮助我。

最佳答案

var Guard = (function () {
"use strict";
function Guard() {
}
Guard.ThrowIfNull = function (argument, argumentName) {
if (argument == null) {
throw "The argument '" + argumentName + "' cannot be null.";
}
};
return Guard;
})();

对于你想要做的事情来说已经足够好了......进一步将其包装在

(function () {

})();

将使 Guard 仅在该范围内可见 - 这不是您想要实现的目标

关于javascript - 当使用 (function()) 时,JavaScript 不再工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31182535/

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