我目前正在验证我对JSLint的JavaScript并取得进展,它正在帮助我编写更好的JavaScript - 特别是在使用Jquery库时.
现在我所遇到JSHint,一个叉的JSLint.
所以我想知道很多JavaScript驱动的Web应用程序,这是更好或最适用的验证工具:
我想现在决定验证机制并继续前进,将其用于客户端验证.
和jshint和jslint之间的区别?请在单个javascript示例中解释.
链接:
jshint - http://www.jshint.com/
jslint - http://jslint.com/
我已经开始使用JSLint了.我检查了我的代码,我收到了这个错误:
第92行的问题字符7:将调用移动到包含该函数的parens中.
})();第92行的问题字符7:在parens中包装整个立即函数调用.
})();
如何修复此错误?
对于其中一个," ()"在里面,而另一个在外面.他们来了:
var a = (function() {
return {
bla: function() {
console.log('a');
}
};
} () );
var b = (function() {
return {
bla: function() {
console.log('b');
}
};
}) ();
a.bla();
b.bla();
Run Code Online (Sandbox Code Playgroud) 在许多书籍/ 博客文章中,自调用匿名函数模式的方式如下:
(function() {
var foo = 'bar';
})();
Run Code Online (Sandbox Code Playgroud)
但是,在此上运行JSLint会出现此错误:
将调用移动到包含该函数的parens中.
例如将其改为此作品:
(function() {
var foo = 'bar';
}());
Run Code Online (Sandbox Code Playgroud)
问题
function(){}()抛出一个SyntaxError: Unexpected token ( function(){}()) - 工作正常
编辑:这是对此的一些后续(虽然我不会说完全重复):JSLint错误:"将调用移动到包含该函数的parens",所以我的主要问题是#3,为什么它完全有效?
var myObject = (function(){
var value = 0;
return {
getValue: function(){
return value;
}
}
}());
var myObject = (function(){
var value = 0;
return {
getValue: function(){
return value;
}
}
})();
Run Code Online (Sandbox Code Playgroud)
执行似乎返回相同的Object.即,myObject包含
{{
getValue: function(){
return value;
}
}}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下.
我知道类似(function(){})()执行的东西因为(function(){})是一个返回函数的表达式,并且尾部()执行了返回的函数.
但为什么这会执行(function(){}())?我在这里期待语法错误.