Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;[变量]在定义之前已使用;错误_Javascript_Jquery_Jslint - Fatal编程技术网

Javascript &引用;[变量]在定义之前已使用;错误

Javascript &引用;[变量]在定义之前已使用;错误,javascript,jquery,jslint,Javascript,Jquery,Jslint,我有几个这样的错误,我不知道如何“正确地”解决它,问题是我有很多javascript文件(分开以便于维护),我包括插件等等 所以在这个例子中,我使用的快捷方式是 这只是定义了访问的快捷方式 shortcut = {....... 然后当我在代码中使用它时 shortcut.add("F1", function () { showDialog(); }, { 'type': 'keydown', 'propagate': false, 'target': editor_document });

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

所以在这个例子中,我使用的快捷方式是

这只是定义了访问的快捷方式

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 = { ...