标签: jslint

如何在JavaScript中将长正则表达式拆分为多行?

我有一个很长的正则表达式,我想在我的JavaScript代码中拆分成多行,以根据JSLint规则保持每行长度为80个字符.我认为这对阅读来说更好.这是模式样本:

var pattern = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
Run Code Online (Sandbox Code Playgroud)

javascript regex expression readability jslint

129
推荐指数
6
解决办法
4万
查看次数

立即函数调用语法

有一个JSLint选项,实际上是一个好的部分,"[需要]围绕立即调用的parens,"意味着构造

(function () {

  // ...

})();
Run Code Online (Sandbox Code Playgroud)

反而需要写成

(function () {

  // ...

}());
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 任何人都可以解释为什么第二种形式可能被认为更好?它更有弹性吗?不容易出错?它比第一种形式有什么优势?


自从提出这个问题以来,我逐渐理解了在函数值和函数值之间进行清晰视觉区分的重要性.考虑立即调用的结果是赋值表达式的右侧的情况:

var someVar = (function () {

  // ...

}());
Run Code Online (Sandbox Code Playgroud)

尽管最外面的括号在语法上是不必要的,但是左括号给出了一个预先指示,即所分配的值不是函数本身,而是调用函数的结果.

这类似于Crockford关于构造函数大写的建议 - 它可以作为任何查看源代码的人的视觉提示.

javascript syntax jslint iife

110
推荐指数
1
解决办法
4万
查看次数

你如何使用vim的quickfix功能?

我是一个非常新的Vim用户,我发现它的学习曲线非常陡峭(至少对我而言).我刚安装了这个用于JavaScriptLint错误检查的vim脚本,它在保存缓冲区后显示了vim的quickfix窗口中的错误.

但是,我不知道下一步该做什么..如何"滚动"所有错误?如何关闭quickfix'窗口'?在对代码进行更改后,如何检查错误?

我看过vim quickfix文档,但命令数量太大,我似乎无法找到我想要的东西.任何帮助,将不胜感激.

一个附带问题:有没有办法让javascriptlint检查驻留在.html文件中的代码的js错误?

谢谢!

vim jslint

109
推荐指数
8
解决办法
6万
查看次数

JavaScript函数顺序:为什么重要?

原始问题:

当我的JavaScript调用一个在页面下面定义的函数而不是调用它时,JSHint会抱怨.但是,我的页面用于游戏,并且在整个内容下载之前不会调用任何函数.那么为什么订单功能出现在我的代码中呢?

编辑:我想我可能找到了答案.

http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting

我在里面呻吟.看起来我需要花一天时间重新订购六千行代码.使用javascript的学习曲线根本不是很陡峭,但它非常loooooong.

javascript function jslint jshint

101
推荐指数
3
解决办法
5万
查看次数

为什么JSHINT抱怨这是严格的违规行为?

我认为这可能是使用此关键字和显示模块模式严格违规的重复

我有这个代码:

function gotoPage(s){
    if(s<=this.d&&s>0){this.g=s; this.page((s-1)*this.p.size);}
}

function pageChange(event, sorter) {
    var dd = event.currentTarget;
    gotoPage.call(sorter, dd[dd.selectedIndex].value);
}
Run Code Online (Sandbox Code Playgroud)

JSHINT(JSLINT)正在抱怨.它说"严格违规".对于突出显示的行:

在此输入图像描述

是我使用Function.call()然后引用实例,不知何故不合适?

这被认为是不好的风格吗?

javascript jslint strict jshint

97
推荐指数
3
解决办法
5万
查看次数

JSLint:在定义之前使用过

嗨,我有3个javascript文件.

  • 的jquery.js
  • utility.js
  • file1.js

在file1.js我有

jQuery.noConflict()
jQuery(document).ready(function($) { 
 // ....
});
Run Code Online (Sandbox Code Playgroud)

我得到一个错误'jQuery'在定义之前就被使用了.并且"文档"在定义之前使用.

我如何安全地摆脱这个警告.

如果我做

var document = document || {}; 
Run Code Online (Sandbox Code Playgroud)

然后在我的utility.js中如果使用它,它将在IE中为null,在Firefox中为ok.

这是什么最好的解决方案?

javascript jslint undefined

95
推荐指数
2
解决办法
7万
查看次数

JSLint预期'==='而是看到'=='

最近,当我想出这个错误时,我通过JSLint运行了一些代码.我认为这个错误很有趣但它自动假设所有==应该是===.

这真的有意义吗?我可以看到很多你不想比较类型的实例,我担心这实际上会导致问题.

"预期"一词意味着每次都应该这样做.....这对我来说没有意义.

javascript jslint

81
推荐指数
5
解决办法
5万
查看次数

JSLint消息:未使用的变量

如果JSLint在这种情况下抱怨"i"是一个未使用的变量,我该怎么办:

var items = "<option selected></option>";
$.each(data, function (i, item) {
    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});
Run Code Online (Sandbox Code Playgroud)

(i,item)是参数的必需顺序,我只使用"item".

除了容忍未使用的变量或重写$ .each以使用索引之外还有其他解决方案吗?我不想做这两种解决方案吗?

提前致谢.

更新:我感谢所有的建议,但这段代码只是一个例子,向您展示我的意思,我有兴趣看到一个通用的解决方案,如果有的话.谢谢.

javascript jquery jslint

80
推荐指数
2
解决办法
3万
查看次数

CoffeeScript中的函数声明

我注意到在CoffeeScript中,如果我使用以下方法定义函数:

a = (c) -> c=1
Run Code Online (Sandbox Code Playgroud)

我只能得到函数表达式:

var a;
a = function(c) {
    return c = 1;
};
Run Code Online (Sandbox Code Playgroud)

但是,我个人经常使用函数声明,例如:

function a(c) {
    return c = 1;
}
Run Code Online (Sandbox Code Playgroud)

我确实使用了第一种形式,但我想知道CoffeeScript中是否有一种生成函数声明的方法.如果没有这种方式,我想知道为什么CoffeeScript会避免这样做.我不认为JSLint会声明声明的错误,只要函数声明在作用域的顶部.

javascript jslint function-declaration coffeescript

78
推荐指数
3
解决办法
4万
查看次数

JSLint错误:将所有'var'声明移动到函数的顶部

JSLint站点已更新,我无法再检查JS脚本.对我来说,这个警告并不重要,我不想通过数千行来解决这个问题,我想找到更多关键问题.

有人知道如何关闭此错误,或使用旧版JSLint?

UPDATE

例:

function doSomethingWithNodes(nodes){
  this.doSomething();

  for (var i = 0; i < nodes.length; ++i){
    this.doSomethingElse(nodes[i]);
  }

  doSomething(); // want to find this problem
}
Run Code Online (Sandbox Code Playgroud)

jslint.com输出:

Error:
Problem at line 4 character 8: Move all 'var' declarations to the top of the function.

for (var i = 0; i < nodes.length; ++i){

Problem at line 4 character 8: Stopping, unable to continue. (44% scanned).
Run Code Online (Sandbox Code Playgroud)

问题:

在函数之上设置变量是新要求.我不能使用JSLINT来测试代码,因为它会停止扫描此错误的脚本.

我有很多代码,并且不希望将此警告威胁为严重错误.

更新8/22/2011:找到http://jshint.com,它看起来比http://jslint.com/好多了

javascript jslint

77
推荐指数
3
解决办法
3万
查看次数