gpt4 book ai didi

javascript - 正确使用 RequireJS、Coffeescript 和 Revealing Module Pattern

转载 作者:行者123 更新时间:2023-11-30 18:20:12 26 4
gpt4 key购买 nike

我在下面定义了一段 Coffeescript 代码,它使用 RequireJS 定义了一个函数:

define 'PersonService', ['jquery'] ($) -> 
getPerson = (id) ->
person = dataService.GetPerson id
{ getPerson: getPerson}

它产生以下内容:

(function() {

define('PersonService', ['jquery'](function($) {
var getPerson;
getPerson = function(id) {
var person;
return person = dataService.GetPerson(id);
};
return {
getPerson: getPerson
};
}));

}).call(this);

我想我遇到的问题是从 Coffeescript 代码生成的自执行函数。这会导致我可能没有跟踪的问题吗?或者这是正确的。

谢谢。

最佳答案

正确

没有包装函数和有包装函数的区别在于作用域。

如果定义var a = 10;在全局范围内,无论是否使用 var 关键字,a 都会变为全局。

当包装时,所有变量都是包装函数的局部变量,因此不要最终成为全局变量。

在您的示例中,所有内容都已经包装在一个函数中,所以是的,您不需要额外的包装!

你可以告诉 coffee-script 不要使用添加包装函数

coffee -b, --bare         compile without a top-level function wrapper

恕我直言:最好始终具有包装函数,这样您就无需逐个文件地考虑它。

关于javascript - 正确使用 RequireJS、Coffeescript 和 Revealing Module Pattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12266047/

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