我有这样的代码:
function dialog($link) {
"use strict";
function doDialogAjax() {
$.ajax({
cache: false,
url: url,
dataType: 'html'
})
.done(onDialogDone)
.fail(onDialogFail);
}
function onDialogDone(data) {
content = data;
// ...
}
}
jslint抱怨onDialogDone尚未定义。我是否真的需要在代码顶部将其定义为全局。我问的原因是因为我认为onDialogDone的功能不是全局的。它只是一个尚未在外部函数中定义的函数。
我是否正确地说,以这种方式定义的函数在最后一个大括号后的末尾不应该有分号?
答案 0 :(得分:0)
jslint
抱怨许多事情,因为它的作者认为它们风格不好,不是因为它们本质上不正确。
在这种情况下,您的函数定义将被提升到作用域的顶部,并且是完全有效的代码。
关于分号问题,包含一个问题是没有害处的。但是,ES5规范并不要求它。
答案 1 :(得分:0)
您不需要将其定义为全局,只需在ajax调用之前定义它。实际上这无关紧要有两个原因:
尽管如此,拥有符合jslint标准的代码是件好事,但这不是生死攸关的问题;)
答案 2 :(得分:0)
你的代码非常好。但是,由于JSLint
使用Pratt Parser (Top Down Operator Precedence)来分析您的代码,当它第一次看到onDialogDone
时,它会抱怨,因为它尚未定义。
要防止它抱怨,只需将功能移至顶部即可。这样,JSLint
将首先解析定义,当它看到.done(onDialogDone)
时,它将知道符号onDialogDone
所指的内容。
function onDialogDone(data) {
// ...
}
function doDialogAjax() {
// ...
}