2

这些天我写的 JavaScript 比以前多得多。我正在为我们的产品编写一堆 JavaScript 库。想要尽可能小心,我正在做完整的 jsdoc 评论等。我也有“使用严格”;在我所有的库和函数中。

我们正在使用 jQuery 和 Kendo UI(没有评论这些是好、坏还是无关紧要,这艘船已经航行了)。这两个库都有他们创建的全局变量,至少分别有“$”和“kendo”。我正在使用带有 Resharper 的 Visual Studio,所以我在编写 JavaScript 时得到了很多帮助。

现在,这是我的困惑。在我的库中,它们位于 LibraryName.js 之类的文件中,我必须同时使用 jQuery 函数和 kendo 函数,所以我正在执行 $.ready(...) 和 kendo.keys.SPACEBAR 之类的操作。Visual Studio 让我对没有在严格模式下定义的“kendo”感到悲痛,它让我对 $.ready 没有被定义感到悲痛,但它不会让我对 $ 没有被定义感到悲痛?为什么特别?

我知道,这是一件小事,但我真的很想了解严格模式的含义以及限制是什么。

谢谢阅读!

补充:显然我不是很清楚,所以我会尝试扩展。在严格模式下,“...例如,您不能使用未声明的变量。” 好吧,我看不出一个库文件(例如 mySuperLibrary.js)如何在不使用“未声明的变量”的情况下使用另一个库文件(jQuery 或 Kendo UI)中的全局值,因为 $ 是一个包含函数的变量,而 kendo 是出色地。显然,这些都没有在我的脚本中声明。

然后让我感到困惑的是,Resharper 抱怨 $.ready 将“准备好”标记为未声明,但没有说 $ 未声明。它还将剑道标记为未声明。它给我的警告是“在'严格模式'中不允许使用变量(属性或对象)而不声明它”。

现在,我的图书馆工作正常。它继续使用这些“未声明的变量”来解决它需要解决的问题。到我的库加载时,这些变量已被声明。

在任何其他语言中,我都会以某种方式在文件中记录我需要定义的外部全局变量。我在 JavaScript 中看不到任何方法可以做到这一点。没有任何类型的“进口”或“外部要求”。我想我想知道我是否只是错过了一些东西。没有办法阻止它打扰我(所以问题可能是我的强迫症,不希望我的库出现“假”错误)。

4

0 回答 0