이유는 함수를 반환 할 때return 문 자바 스크립트
샘플
<script language="javascript">
return compute();
alert(1);
</script>
이 경고는
이유는 함수를 반환 할 때return 문 자바 스크립트
샘플
<script language="javascript">
return compute();
alert(1);
</script>
이 경고는
경고를 작동하지 않습니다 아래에 내가 더 많은 코드를 가질 수 있다는 것입니다하지 않습니다 직장
나에게 맞는 소리. 이 코드의 의미는 다음과 같습니다.
(function() {
return compute();
alert(1);
})();
return
구문의 기능은 두 가지입니다. 먼저 값을 반환합니다 (이 경우 함수에 대한 포인터). 둘째, control flow을 관리하는 것입니다. 즉, 해당 코드를 실행중인 브라우저에 해당 함수를 남기고 실행 제어를 예제 스크립트를 호출 한 코드 조각으로 반환합니다.
또 다른 방법은 값을 반환하고 실행을 계속할 것을 기대하면서 브라우저가 다음에 무엇을해야하는지 모호하게 만듭니다.
두 줄을 뒤집 으면 (먼저 경고하고 THEN이 값을 반환 함) 두 줄이 모두 실행됩니다.
This tutorial 또한 더 많은 통찰력을 제공 할 수 있습니다.
Rob W 및 Kris Krause가 언급 한 바와 같이는 또한, 당신 만 return
함수에서, 아직 당신이 보여준 코드가 함수에 싸여되지 수 .
작은 수정 :이 경우 (나는 OP의 예를 가정한다) 반환 값은'compute()'가 반환하는 것이고 반드시 함수 일 필요는 없다. 'return compute;'는'compute()'함수를 리턴합니다. – JJJ
함수/클로저의 내부에서 은에 return 문 아래에 코드가 있습니다. 특히, 함수 선언은 호이 스팅 될 것이므로 반환 값 이상의 코드에서 사용할 수 있습니다. 나는이 "패턴"을 항상 사용한다. 여기에 현재 코드베이스의 작은 예제가있다.
function msgHandlers() {
var scope
,msgs;
return {
SET_CONTEXT: function(context) {
scope = context.scope;
msgs = context.messages;
}
,SUBSCRIBE_ALL: function() {
me.subscribe(scope, msgs.ITEM_PINNED, itemPinnedHandler);
}
}
function itemPinnedHandler(record) {
loadInventoryRecord(record);
}
}
왜냐하면'return'은 함수 컨텍스트 내에서만 사용할 수 있기 때문이다. –