jsLint仍在警告“;X是在定义之前使用的"即使设置了undef
jsLint still giving warning "X was used before it was defined." even when undef is set
最近,js文件中的一个拼写错误导致我的一个项目出现问题,但仅在某些浏览器上出现问题。我试图通过jsLint运行我们的大部分js文件,以查找任何其他未检测到的问题。我们的目标是让我们所有的js文件通过jsLint,要么纠正这个问题,要么如果我对这个问题满意,然后打开适当的jsLint选项。
如果我能做到这一点,那么在未来我想找到一种更频繁地运行jsLint的方法,但首先我需要让所有的文件都通过。
不过,我在一个问题上遇到了很多麻烦。我一直收到"X在定义之前就被使用了"的警告/错误。我可以在定义项目之前使用它们,所以我想关闭这个警告。我试过在顶部的注释中设置undef:true,并通过web界面设置复选框,但到今天为止,我仍然收到这个错误。
这个选项被破坏了吗,或者我做错了什么,或者错误地理解了这个选项的作用。
根据文档,这应该适用于函数。
我目前正在使用jsLint web工具扫描下面的代码。
/*jslint undef: true, white: true, browser: true */
/*global jQuery */
(function($){
"use strict";
$(function() {
createDashboard();
loadDashboardDataFromControls();
});
function loadDashboardDataFromControls()
{
}
function createDashboard()
{
}
}(jQuery));
根据JSLint源代码(截至本文撰写之时的最新提交),undef
在严格模式下为false
:
function use_strict() {
if (next_token.string === 'use strict') {
if (strict_mode) {
warn('unnecessary_use');
}
edge();
advance();
semicolon();
strict_mode = true;
option.undef = false;
return true;
}
return false;
}
我想您已经意识到了,通过重新排列源代码可以很容易地避免警告。只需将loadDashboardDataFromControls()
和loadDashboardDataFromControls()
移动到$([...])
之上。
注意:虽然在严格模式中,变量在使用之前需要定义,但您的代码显然不会违反该规则。因此,在我看来,我们看到的至少是一个文档错误:JSLint文档应该声明,在严格模式下,undef
标志设置为false
。
要禁用此消息,您可以在项目的根目录中创建一个.jshintrc文件,并添加代码:
{
"latedef": false
}
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- jsLint仍在警告“;X是在定义之前使用的"即使设置了undef
- 通过javascript编程设置请求[quot;__EVENTTARGET"]
- 将对象设置为Backbone.js模型,而不必调用“;set()"在每一处房产上
- jQuery"该参考文献“;加载事件后未设置
- DurandalJS 2.0.0:哪里是"设置”;在新路由器中
- 如何设置<一个标题=“">用于erb
- TypeError:无法设置属性"字符串”;的字符串(Javascript)中未定义
- "可以't在标头之后设置标头'重新发送”;
- 如何设置facebook像素"提交按钮”;跟踪
- "X-请求-带“;header已设置,但不在php中
- 我的onClick事件没有设置“;selectedValue"用户选择的选项中的变量
- 在输入3个数字后,自动插入“-"并将限制设置为9个字符
- 使用逗号初始化/设置多个变量,不带“var"”
- value=" someevalue& quot;有什么区别?并在html中设置(value," s
- Javascript-JQuery:找不到id和.html(")或getElementById并设置inner
- 是否有一种方法可以确定指令范围“&"项已设置为某个内容
- 有没有一种设置方式"!“重要”;用于event.stop()
- "OOP”-JS-将属性设置为等于函数
- 检测safari高级设置:“;永远不要使用小于..的字体"来自javascript