Javascript &引用;[变量]在定义之前已使用;错误
我有几个这样的错误,我不知道如何“正确地”解决它,问题是我有很多javascript文件(分开以便于维护),我包括插件等等 所以在这个例子中,我使用的快捷方式是 这只是定义了访问的快捷方式Javascript &引用;[变量]在定义之前已使用;错误,javascript,jquery,jslint,Javascript,Jquery,Jslint,我有几个这样的错误,我不知道如何“正确地”解决它,问题是我有很多javascript文件(分开以便于维护),我包括插件等等 所以在这个例子中,我使用的快捷方式是 这只是定义了访问的快捷方式 shortcut = {....... 然后当我在代码中使用它时 shortcut.add("F1", function () { showDialog(); }, { 'type': 'keydown', 'propagate': false, 'target': editor_document });
shortcut = {.......
然后当我在代码中使用它时
shortcut.add("F1", function () { showDialog(); }, { 'type': 'keydown', 'propagate': false, 'target': editor_document });
jslint会抱怨
JS Lint:“快捷方式”在定义之前已被使用
我也有自己的代码,其中我使用了在其他文件中声明的函数,那么解决这个问题的“正确”方法是什么如果变量是由另一个文件定义的,您可以通过提供以下格式的注释来告诉JSLint:
/*global shortcut*/
可以通过逗号分隔许多变量来实现这一点。追加:
和true
或false
(默认为false
)将指定当前文件是否可以重新分配变量:
/*global shortcut:false, otherVar:true*/
缺少
var
关键字,该关键字用于定义全局范围和函数范围的变量
var shortcut = { }
您需要对定义的每个变量使用var
,否则会遇到大量问题
可以通过省略var
关键字来创建隐式全局变量,但这是非常不受欢迎的,根本不推荐使用。如果需要从内部作用域创建全局变量,则可以将对象添加到窗口
,或者根据上下文将该对象添加到:
function defineShortcut() {
window.shortcut = {};
/* or this.shortcut = {}; */
}
defineShortcut();
在使用变量快捷方式之前,必须使用var关键字声明它,否则它将是一个被认为(事实上)有害的全局变量
小心说“当前范围”,因为它不是全部<代码>让
用于块范围,var
用于函数范围。不,我没有,因为所述的快捷方式不是我的代码,请查看它前面没有var。这甚至不是我的问题,如果我弹出一个不能解决js lint问题的var-infront,它仍然会“在定义之前使用”,因为它是在另一个文件中定义的。@ChrisMorgan:let
尚未正式成为ECMAScript标准的一部分(ES Harmony对此有一个建议),因此您不应该在实时代码中使用它。不过,你确实有道理,我会相应地更新答案。@Mech0z:对不起,我没有正确阅读你的问题。我已经用正确的解决方案更新了我的答案。我现在访问它时添加了window.shortcut,但这对所有变量都有效吗?所以,即使它们没有在任何文件中定义,jslint仍然会接受它吗?
var shortcut;
shortcut = { ...