这些天我写的JavaScript比以前多了很多。我正在为我们的产品编写一堆JavaScript库。想要尽可能小心我正在做完整的jsdoc评论等。我也有'使用严格';在我的所有库和函数中。
我们正在使用jQuery和Kendo UI(没有评论这些是好的,坏的还是无关紧要的,这艘船已经航行)。这两个库都有它们创建的全局变量,至少分别为“$”和“kendo”。我正在使用带有Resharper的Visual Studio,因此我在编写JavaScript时获得了很多帮助。
现在,这是我的困惑。在我的库中,像LibraryName.js这样的文件,我必须使用jQuery函数和kendo函数,所以我做的是像$ .ready(...)和kendo.keys.SPACEBAR。视觉工作室让我对“剑道”没有被严格模式定义感到悲痛,它让我对$。已经没有被定义感到悲痛,但是它并没有让我因为没有被定义而感到悲伤?为什么这么特别?
我知道,这是一件小事,但我真的想了解严格模式的含义以及限制是什么。
感谢阅读!
补充:显然我不清楚,所以我会尝试扩展。在严格模式下,“......你不能,例如,使用未声明的变量。”好吧,我没有看到一个库文件(例如,mySuperLibrary.js)如何使用来自另一个库文件(jQuery或Kendo UI)的全局值而不使用“未声明的变量”,因为$是包含函数的变量,而kendo是as好。显然,这些都没有在我的脚本中声明。
然后让我感到困惑的是,Resharper抱怨$ .ready,它标记为“准备好”为未申报但不说$未申报。它还将剑道标记为未声明。它给我的警告是“使用变量(属性或对象)而不声明在'严格模式'中不允许它。”
现在,我的图书馆工作正常。它继续并使用这些“未声明的变量”来解决它需要解决的问题。当我的库加载时,这些变量被声明。
在任何其他语言中,我会以某种方式在文件中记录我需要定义的外部全局变量。我认为在JavaScript中没有办法做到这一点。没有任何“进口”或“外部要求”。我想我想知道我是否只是遗漏了一些东西。没有办法阻止它烦扰我(所以也许问题是我的问题,不希望我的库有“假”错误)。