"[变量]在定义之前使用"错误

Mec*_*h0z 2 javascript jquery jslint

我有几个这些错误,我不知道如何"正确"解决它,问题是我有很多javascript文件(分离,以便于维护),我包括插件等.

所以在这个例子中我使用来自http://www.openjs.com/scripts/events/keyboard_shortcuts/的快捷方式

这只是定义了快捷方式

shortcut = {.......
Run Code Online (Sandbox Code Playgroud)

然后,当我在我的代码中使用它时

 shortcut.add("F1", function () { showDialog(); }, { 'type': 'keydown', 'propagate': false, 'target': editor_document });
Run Code Online (Sandbox Code Playgroud)

jslint会抱怨

JS Lint:在定义之前使用了'快捷方式'.

我也有自己的代码,我使用在其他文件中声明的函数,所以解决这个问题的"正确"方法是什么

And*_*y E 7

如果变量由另一个文件定义,您可以通过以下格式提供注释来告诉JSLint:

/*global shortcut*/
Run Code Online (Sandbox Code Playgroud)

您可以通过逗号分隔它们来为多个变量执行此操作.追加:truefalse(默认为false)将指定当前文件是否可以重新分配变量:

/*global shortcut:false, otherVar:true*/
Run Code Online (Sandbox Code Playgroud)

您缺少var关键字,用于定义全局和函数范围的变量.

var shortcut = { }
Run Code Online (Sandbox Code Playgroud)

你需要使用var每一个定义的变量,否则你会碰到的问题质量.

可能通过省略创建全局隐含的var关键字,但它在高度皱起眉头,不是建议.如果需要从内部作用域创建全局变量,可以window根据上下文将对象添加到或this:

function defineShortcut() {
    window.shortcut = {};
    /* or this.shortcut = {}; */
}

defineShortcut();
Run Code Online (Sandbox Code Playgroud)