2012-01-11 2 views
3

함수에서 누락 된 return 때문에 수많은 버그가 발생했습니다. 여러분이 작성한 대부분의 코드가 Ruby에있을 때 명시 적 리턴을 잊어 버리는 것은 쉽습니다.모든 자바 스크립트 함수가 값을 반환하도록하려면 어떻게해야합니까?

그래서 JSlint (이미 사용하고있는)와 비슷한 것을 사용하여 모든 함수가 어떤 것을 반환하는지 확인하고 싶습니다. 예, 누락 된 수익을 추적하는 것보다 명시 적으로 필요한 것을 반환하는 것이 더 바람직하다고 생각합니다.

따라서 반환 여부를 확인하는 도구가 있습니까? 아니면 런타임에 간단한 방식으로 주장 할 수 있습니까?

Coffeescript를 제안하지 마십시오. 그 존재를 알고 있습니다.

+6

이것은 자바 스크립트를 단위 테스트하는 데 필요한 완벽한 그림입니다. – Joe

답변

4

JSUnit 예 :

<script language="javascript" src="jsUnitCore.js"></script> 
<script language="javascript"> 
    function testWithValidArgs() { 
     assertEquals("someFunction should return something", "Expected REturn Value", someFunction(2, 3)); 
    } 
</script> 
+0

jsunit 대신 [mocha] (https://github.com/visionmedia/mocha) 또는 [jasmine] (http://pivotal.github.com/jasmine/)을 사용하십시오. – Raynos

1

그냥 지속적으로 return를 추가합니다. 그러나 JSlint는 매우 엄격한 검사 도구입니다. 함수의 응답을 사용하여 변수를 정의하려고하지 않는 한 값을 반환하지 않으면 오류가 발생하지 않지만이 경우 return 문을 추가하는 것 이상의 논리가됩니다.

그러나 모든 기능에 여전히 return 문을 사용하려는 경우 처음부터 추가해야합니다. 그들을 추가하는 도구는 없습니다.

1

저는이 도구를 사용하지 않는 도구에 대해서는 전혀 알지 못합니다. 그러나 하나를 쓰는 것은 어렵지 않습니다.

UglifyJS을 사용하여 코드를 구문 트리로 구문 분석하십시오. 모든 코드를 검사하여 함수 정의를 찾는 재귀 함수를 작성하십시오. 당신이 찾은 모든 기능에 대해 마지막 문장을보십시오. 그 중 하나가 return 문이 아니라면 경고를 인쇄하십시오.

0

(논평을 너무 오래.)

내 문제 함수가 더 (의미) 반환 값은이 목적을 패배하는 undefined을 반환하지 않는 한 그것은, 오해의 소지가 있다는 것입니다 없습니다 때 뭔가를 반환과 함께.

return이 표시되는 경우 방법 및 통화 사이트에서 코드에 대한 이유를 설명해야합니다. 그것이 않는 값 등을 반환 왜 내가 지금까지 무엇을 반환 여부를 결정해야하는 기능에

이 주위 유일한 방법은 명백한가 돌아 정말 아니다 만드는 상수를 반환하는 것입니다 아무것도, 그것은 단지 뭔가를 반환하는 욕망을 만족시키는 것입니다.

반환 값이 무시되는 경우 호출 사이트에서 이유를 이해하고 정상적으로 처리해야합니다. 모든 함수가 무언가를 반환한다는 것을 알게되면 함수를 검사하여 해당 값을 반환하는지 확인하거나 위 프로세스를 수행해야합니다.

필자는 차라리 내 기능을 "function""method" 네임 스페이스로 차별화하여 사용하고 있습니다. 이렇게하면 각 네임 스페이스의 자동화 된 테스트를 통해 모든 함수가 유용한 것을 반환하도록하고 모든 메서드는 이 아니며이 아니며 호출자가 예상해야하는 원본 수준의 단서를 제공합니다.