2016-10-24 6 views
2

루프 내에서 두 개의 익명 함수가 생성되었지만 jshint은 anon 함수가 전달되지 않은 변수를 참조 할 때만 경고를 표시합니다.jslint 경고 "외부 변수를 참조하는 함수에 대해서만"루프 내에서 함수를 작성하지 마십시오 "?

왜 이런가요?

(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; 
    }); 
    } 
})(); 
+1

그냥 이것을 무시하면 linting이 좋지 않으며 루프 내부에서 함수를 선언했다고 생각합니다. – Eric

+0

@Eric하지만 루프 내부에서 함수를 선언하고 있는데, 루프 내부에서 선언 된 두 함수에 대해 경고를 표시하지 않는 이유에 대해 궁금합니다. – mtfurlan

+3

reduce 함수가 클로저의 어떤 것도 참조하지 않기 때문에 런타임에 최적화 될 수 있습니까? 이것을 기반으로하는 것은 없지만, 그것은 두 가지 사이의 한 가지 차이점입니다. –

답변

3

변경해야하는 것은 좋지 않은 경고입니다. jshint issue에서

내가 열 :

이 경고는 처음에 루프 내의 모든 기능 에 대해보고했다. gh-1887 (버전 2.5.7에서 릴리스 됨)까지는 이라는 경고가 주변의 바인딩에 따라 특정 사례로 제한된다는 제한이있었습니다. 그 당시 텍스트도 업데이트되었을 것입니다.

언제든지 처리 할 때마다 jshint pull request 3058으로 고정됩니다.