2012-02-28 1 views
52

JSLint는 다음 (쓸모 예) 코드가 잘못되었다고 불평 :왜 JSLint는 "return '후에"Unexpected "else'에 대해 불평합니까?

(function (x) { 
    "use strict"; 
    if (x === 1) { 
     return 1; 
    } else if (x === 2) { 
     return -1; 
    } 
    return 0; 
}(1)); 

Error: Problem at line 4 character 9: Unexpected 'else' after 'return'.

return 1;

인가가 심각하게는 경우/다른 구조 안에 반환 문을 사용하는 것이 나쁜 것을 제안?

그것은이 버전은 괜찮 생각 :

(function (x) { 
    "use strict"; 
    var returnval = 0; 
    if (x === 1) { 
     returnval = 1; 
    } else if (x === 2) { 
     returnval = -1; 
    } 
    return returnval; 
}(1)); 
+6

JSLint에서이 규칙을 비활성화하는 방법이 있습니까? –

답변

85

그냥 elsereturn이 불필요 함을 말하고있다. 다음은 문제가 없습니다.

(function (x) { 
    "use strict"; 
    if (x === 1) { 
     return 1; 
    } 
    if (x === 2) { 
     return -1; 
    } 
    return 0; 
}(1)); 
+49

당신 말이 맞아요. 나는 개인적으로 if-else 체인을 선호하지만 코드의 의도를보다 명확하게 이해하는 것처럼 느껴집니다. – Hal

+2

@Hal 그리고 리팩토링 할 때 특히 유용합니다. 실제로 하나의'return'을 사용하기로 결정한 경우에 특히 유용합니다. 생략 된'else'는 에러가됩니다. – Sulthan

1

일관성을 높이기 위해 항상 함수를 반환하는 것이 좋습니다. JSLint는 매우 엄격하고 프로그래머들의 감정을 상하게하는 것으로 알려져 있습니다. 그것을 도와주세요. 개인적으로 나는 버전 1이 괜찮다고 생각한다.

4

내가 jslint를 발견했다는 것은 규칙을 고수한다면 50 %가 우스꽝 스럽지만 코드에 부정적인 영향을 미치지 않는다는 것이다. 다른 50 % (또는 그 이상)는 좋은 이점을 줄 것입니다. 나머지 50 %는 그렇게하십시오. 이 특정 예제는 조건의 유사성 또는 이와 유사한 것에 대해 명시 적으로 강요합니다 ... else와 함축적이되도록하는 대신 ... if/else에 동일하게 적용됩니다.

+1

동의하지 않습니다. 예, 50 %는 "부정적인 영향 없음"을 제공하지 않습니다. 그러나 코드 자체에 관한 것입니다. 향후 유지 보수, 디버그 시간이 거의 없음, 개발자와 같은 코드를 작성하지 않았거나 닌자가 아닌 개발자를 생각해보십시오. 엄격 모드의 JSLint는 모든 사람이 경험/기술 또는 시간에 관계없이 모든 사람과 읽고/이해하고 코드화 할 수있는 표준/표준화 된 방법으로 코드를 제공합니다. 그렇습니다. 엄격합니다. 존중하는 것이 어렵지만 코드가 준수 할 때, 그것은 "크로스 - 인간 코드"입니다. – MathKimRobin