gpt4 book ai didi

javascript - 在 JavaScript 中,将伪类包装在 IIFE 中有什么好处?

转载 作者:行者123 更新时间:2023-11-28 06:43:08 24 4
gpt4 key购买 nike

这是 IIFE 中伪类的示例

// cow.js
(function(exports) {
"use strict";

function Cow(name) {
this.name = name || "Anon cow";
}
exports.Cow = Cow;

Cow.prototype = {
greets: function(target) {
if (!target)
throw new Error("missing target");
return this.name + " greets " + target;
}
};
})(this);

与以下内容相比,这样做有什么好处:

  "use strict";

function Cow(name) {
this.name = name || "Anon cow";
}
exports.Cow = Cow;

Cow.prototype = {
greets: function(target) {
if (!target)
throw new Error("missing target");
return this.name + " greets " + target;
}
};

这两个方法最终不会将 Cow 的“构造函数”函数添加到全局作用域吗?

cow.js 文件通过 HTML 文档包含在脚本标记中。这意味着 this 的值是窗口。这两个示例将函数添加到的全局范围不是相同的吗?

有人可以提供一个在模块或不同范围中使用它的示例吗?

这不是重复的,因为以下相关问题中的 IFFE 不采用参数 - What is the purpose of wrapping whole Javascript files in anonymous functions like “(function(){ … })()”?

代码是从这里复制的:https://nicolas.perriault.net/code/2013/testing-frontend-javascript-code-using-mocha-chai-and-sinon/

最佳答案

区别在于作用域 - 在第一种情况下,所有内容都在匿名函数作用域中定义,在第二种情况下,在全局作用域中定义。 IIFE的好处是模块封装,你可以在每个模块中定义同名的函数/类,而不会影响其他模块。

关于javascript - 在 JavaScript 中,将伪类包装在 IIFE 中有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33629032/

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