【发布时间】:2016-10-24 17:22:34
【问题描述】:
我在循环中创建了两个匿名函数,但jshint 仅在匿名函数引用未传递给它的变量时发出警告。
这是为什么?
(function(){
for(var i=0; i<5; ++i){
var age = 9001;
//This has a jshint warning, as it uses age
var cutoffs = [1800,12000].map(function(cutoff){
return cutoff < age;
});
//but this doesn't cause a warning, despite creating a function inside a loop
var cutoffs2 = [1800,12000].map(function(cutoff){
return cutoff < 42;
});
}
})();
【问题讨论】:
-
忽略这一点,linting 很糟糕,并认为您在循环中声明了一个函数。
-
@Eric 但是我在循环内声明了一个函数,我只是好奇为什么它没有对循环内声明的两个函数发出警告。
-
我想知道是不是因为reduce函数没有引用闭包中的任何东西——所以它可以通过运行时优化吗?没有任何依据,但这是两者之间的区别之一。
-
我认为这可能是一个是多行而另一个不是的事实。 linter 将单行函数视为内联函数,而多行函数似乎是完整的函数调用。
-
@DougMoscrop 似乎就是这样。
jshint仅在引用外部变量时发出警告。
标签: javascript jshint