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

时间:2011-11-15 09:22:32

标签: javascript jquery jslint

我有几个这样的错误,我不知道如何“正确”解决它,问题是我有很多javascript文件(分离以便于维护)并且我包含插件等等。

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

的快捷方式

这只是定义了

的快捷方式
shortcut = {.......

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

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

jslint会抱怨

  

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

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

2 个答案:

答案 0 :(得分:7)

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

/*global shortcut*/

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

/*global shortcut:false, otherVar:true*/

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

var shortcut = { }

您需要使用var来确定每个变量,否则您将遇到大量问题。

可以通过省略var关键字来创建隐式全局变量,但它非常不受欢迎,而且根本不推荐。如果需要从内部范围创建全局变量,可以将对象添加到window,或者根据上下文this添加:

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

defineShortcut();

答案 1 :(得分:0)

你必须在使用之前用var关键字声明一个变量快捷方式,否则它将是一个全局变量,被认为是(实际上)是邪恶的。

var shortcut;

shortcut = { ...