CoffeeScript를 사용하여 무언가를 반환하지 않는 방법이 있습니까?


116

CoffeeScript가 자동으로 범위의 마지막 항목을 반환하는 것 같습니다. 이 기능을 피할 수 있습니까?


왜 그러고 싶니? 원할 때 반환 된 값을 버릴 수 없습니까?
크리스

11
@Chris : 의미있는 반환 값이 없을 때 마지막 진술의 결과를 유출하는 것은 좋은 생각이 아닙니다.

11
이러한 지능형으로 성능에 영향을 미칠 수 @ 크리스 / / 경첩도 배열의 각각의 반복의 결과를 수집 할 수 커피 스크립트로 루프의 리턴 값을 사용 (또는 기능의 최종 표정 인 경우) 경우하면서
Arnaud Le Blanc

1
방금 건설자에게이 문제가 발생했습니다. 생성자의 마지막 줄에 함수를 정의했습니다. 그래서 이것은 내 "Class-Function"대신 반환되었습니다. 나는 이것을 명시 적으로 반환해야했다. 이것이 문제가 될 수 있다고 말하는 것뿐입니다.
Markus

답변:


150

명시 적으로 아무것도 반환하지 않거나 함수 하단에 undefined로 평가되는 표현식을 남겨 두어야합니다.

fun = ->
    doSomething()
    return

또는:

fun = ->
    doSomething()
    undefined

이것은 이해력을 사용할 때 문서가 권장하는 것입니다.

이러한 경우 함수 하단에 의미있는 반환 값 ( 예 : true 또는 null) 추가하여 실수로 이해 결과를 반환하지 않도록주의 하세요 .


그러나 다음과 같이 래퍼를 작성할 수 있습니다.

voidFun = (fun) ->
    ->
        fun(arguments...)
        return

( 여기에 표시 연산자 ( ...))

함수를 정의 할 때 다음과 같이 사용하십시오.

fun = voidFun ->
    doSomething()
    doSomethingElse()

또는 다음과 같이 :

fun = voidFun(->
    doSomething()
    doSomethingElse()
)

이 유익한 답변에 감사드립니다. 나도 현재 coffeescript를 배우면서 이것에 대해 궁금해하고 있습니다. 최선의 선택이 무엇인지, 아니면 가치의 반환을 막을 때 최악의 선택이 무엇인지에 대해 약간의 빛을 비출 수 있는지 궁금합니다. 특히, 나는 옵션 중 하나를 추가 할 수 있습니다 말씀 드리 지요 return, undefined또는 null내 함수의 끝. 그러나 추가하는 null것은 어떤 이유로 나에게 잘못된 것 같습니다. 세 가지 중 최악의 선택이라고 생각하는 것이 옳습니까?
stefmikhail 2012 년

2
자바 스크립트에서 return 문이없는 함수 (또는 빈 return 문)는 undefined를 반환하므로 가장 좋은 방법은 빈 return을 추가하거나 undfined끝에를 두는 것 입니다. 빈 return문장을 사용하는 것은undefined 함수의 끝에 를 남겨 두는 보다 더 나은 것은 아무것도 반환하지 않는return 것 같으므로 빈 것이 더 나은 옵션 인 것 같습니다.
Arnaud Le Blanc

2
대신에 fun(arguments...)전화하는 것이 좋습니다 fun.apply(this, arguments).
Miguel Madero 2013 년

4
실제로 "return"과 "undefined"는 다른 자바 스크립트를 생성합니다. coffeescript.org에서 "Try Coffeescript"를 사용하면 coffeescript 에 "return"을 명시 적으로 포함하면 javascript에서 반환이 제거된다는 것을 알 수 있습니다. 반면, "undefined"를 사용하면 javascript 함수는 "return void 0;"으로 끝납니다.
Daniel

1
내부 함수가 여전히 원하는 것을 반환하여 성능 저하를 유발할 수 있다고 생각하기 때문에 voidFun을 조심해야한다고 생각합니다.
AturSams 2014 년

10

예, return함수의 마지막 줄은 a입니다.

예를 들면

answer = () ->
  42

extrovert = (question) -> 
  answer()

introvert = (question) ->
  x = answer()
  # contemplate about the answer x
  return 

커피가 컴파일되는 js가 무엇인지 확인하려면 http://bit.ly/1enKdRl을 시도하십시오 . (예를 들어 coffeescript redux를 사용했습니다)


1
나는이 답변이 이미 상위 투표 답변에있는 것 외에는 어떤 가치도 추가하지 않았기 때문에 비추천이라고 생각합니다.이 답변은이 답변보다 2 년 전에 주어집니다!
kumarharsh

5

재미있는 것 (ctional)

suppressed = _.compose Function.prototype, -> 'do your stuff'

Function.prototype그 자체는 항상 아무것도 반환하지 않는 함수입니다. compose를 사용하여 반환 값을이 블랙홀로 파이프 할 수 있으며 구성된 함수는 아무것도 반환하지 않습니다.


1
longRunningFunctionWithNullReturn = ->
  longRunningFunction()
  null

-1

CoffeeScript의 함수는 항상 무언가를 반환해야합니다 null. C에서는 void반환 유형이 있습니다. ->, 빈 함수는로 컴파일 (function() {})되므로 아무것도 반환하지 않는 유일한 함수입니다.


그건 사실이 아니야. return;C, JavaScript 및 CoffeeScript에서 작동하여 void 값을 반환합니다.
yyny 2015
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.