在 Javascript:好的部分 Crockford写道“Javascript依赖于全局变量进行链接。”我理解在javascript中如果你在一个函数之外声明一个变量,它“在global namespace” - 这意味着你可以在程序的任何地方访问它。我有点理解linkage如何限制C ++程序中可以访问变量的位置(无论其范围如何)。话虽如此,克罗克福德意味着什么?
答案 0 :(得分:1)
我认为他的意思是全局变量是你与图书馆沟通的方式。例如,jquery使用全局变量$,下划线使用_等。您可以通过全局名称链接到lib。
答案 1 :(得分:1)
继续
抛出所有编译单元的所有顶级变量 一起称为全局对象的全局命名空间。这很糟糕 因为全局变量是邪恶的,而在JavaScript中它们是邪恶的 基本的。幸运的是,正如我们将要看到的,JavaScript也给了我们 缓解这个问题的工具。
我认为,Crockford所指的是,JS中没有类似于模块或命名空间的机制来在宏观层面上分离和模块化功能块,其中这些块明确表示它们正在暴露(导出),或者他们从其他块使用的内容(导入)。然而,正如他所指出的那样,JS确实提供了通过现有语言功能实现这一目标的能力,尽管并不完美,但世界还没有结束。与此同时,这个问题现在正在多个方面得到解决,特别是ES6模块机制。