提问人:sootsnoot 提问时间:8/30/2023 更新时间:8/30/2023 访问量:18
这是我的 javascript 脚本用来防止与其他脚本冲突的“命名空间”全局变量的合理方法吗?
Is this a reasonable way to "namespace" globals that my javascript scripts use to prevent collisions with other scripts
问:
我是一个有点新手的javascript程序员,很容易对语言的一些细微差别感到惊讶或不知所措,尽管我已经做了50多年的程序员,使用了很多语言,包括fortran,pascal,C,C++,PL / I,汇编语言,微码,IBM MVS JCL等。
我在某处看到一段 javascript 代码,开头是这样的:
ModuleX = ModuleX || {};
各种函数中的其余代码,有时在其他文件中,继续创建/修改此全局对象的属性而不受惩罚,“知道”不会与加载的其他 JavaScript 文件发生名称冲突。我知道 javascript 有很多不同的模块系统,但这个简单的约定让我觉得很粗糙,但简单而有用,我经常使用它。因此,当我想要一个可以从任何脚本调用的全局函数时,我写道:
ModuleX.myfunc = function() {...};
这似乎很好,直到我不小心将包含此类函数定义的一些代码行复制到同一文件的另一部分,然后当我想对函数进行一些更改时,却没有注意到我正在更改哪个定义!我的下意识反应是“多么愚蠢的语言,它不检测重复的全局函数定义”。然后我对自己说,也许我应该写作
const ModuleX.myfunc = function() {};
但显然这是无效的,因为 const 不能在全局范围内使用。
这很愚蠢吗,我是否应该只在名称上使用前缀而不是对象,例如
ModuleX_myfunc() {};
还是其他同样简单的东西?建议?
答: 暂无答案
评论