【发布时间】:2016-05-09 15:52:52
【问题描述】:
我最近一直在玩 JS 和其他各种与 Web 相关的东西,并且在应用它的同时学到了整个东西。
出于兴趣,我将代码放入 JS 验证器 (jslint.com),结果令人震惊。我确实理解大多数警告,但特别是有一个我无法理解。它读取'doSomething' is out of scope。基本上,这是相关部分,我相信。我的整个脚本的结构是这样的:准备函数开始,然后进入特定的函数。
$('document').ready(function () {
$('#btn').click(function () {doSomething();});
});
function doSomething() {
console.log('did something');
}
我想,如果一个变量在 if 表达式中声明并在其外部使用,则它是“超出范围”的。像这样:
function whatnot() {
if (true) {
var x = 10;
}
return x;
}
但这如何转化为我的问题?你能帮我理解这个问题,并为更好的代码结构提供示例(或指出一些可能有帮助的文章吗?)
提前致谢:)
【问题讨论】:
-
它超出了
document.ready块的范围 - 这可能是警告的意思 -
不要猜测,请确保:如果您通过 JSLint 自己运行该 sn-p,它是否仍然告诉您它超出了范围?
-
如果你直接复制粘贴到 jslint.com 还是会发出警告,是的。
-
也许 $('document').ready(function () { $('#btn').click(function () {doSomething();}); }); 在定义 doSomething 之前执行。
-
每当我看到一个关于 JS Lint 的问题时,我都会感叹道格拉斯·克罗克福德(Douglas Crockford)未能记录(至少在错误消息附近的任何地方)他对什么是优质 JavaScript 的高度固执的想法。 .
标签: javascript scope jslint