나는 javascript에서 return 문으로 고심하고있다.return 문은 내부에서 외부로 작동합니까?
function bin2dec(num){
**return** num.toString().split('').reverse().reduce(function(preVal, currentVal , iterator){
**return** (currentVal === '1') ? preVal + Math.pow(2, iterator) : preVal;
}, 0);
}
하는의 그래서 = 101
Binary5 작업을 예로 들어 진 5를 사용하자 : 여기 여기 msdn definition
내가 그 진수 진수로 변환 쓴 기능입니다 나는 return 문을 사용할 때마다 현재 함수를 조기에 종료한다고 생각했다.
여기에는 콜백 함수 내에 두 개의 return 문이 있습니다. ,
return num.toString().split('').reverse() // and then the reduce function w/ a call back.
나는이 '반환'문은 함수의 반환 함수는 숫자를 취 그것을 문자열을 만드는
을 줄이기 위해 기다리고 생각 :
첫 번째 return 문은 두 번째 줄에 분리 한 다음 다시 반전합니다. 그러면 reduce 메소드가 배열에 대해 반복합니다. reduce 함수가 완료되면 첫 번째 반환 값에 의해 반환되는 값을 반환합니다. reduce 함수 반환 값에 대한 자세한 내용은 다음과 같습니다. 콜백에서
:이 케이스 '복귀'에서, 상기 어레이의 각각의 부분을 반복 처리// 101
.reduce(function(preVal, currentVal , iterator){
return (currentVal === '1') ? preVal + Math.pow(2, iterator) : preVal;
}, 0);
의 '복귀'값으로 전달된다 currentVal === 1. 않는 프레이며 콜백은 preVal의 값입니다. 각 루프에 대해 우리는 현재 val에서 현재의 val을 더하고 추가합니다. 배열의 모든 항목이 반복 될 때 return 문은 최종 값입니다. 그런 다음 최종 값은 아직 실행되지 않은 첫 번째 return 문에서 반환됩니다.
나는 종종 return 문을 잃어버린다. 나는 주로 'return'진술이 내가 묘사하고있는 방식대로 어떻게 행동하는지에 대한 내 논리가 있는지 확인하려고한다. 빠른 정리 해보
먼저 반환 - 반환하는 객체가 있도록 평가 될 모든 것을 기다립니다.
둘째 반환이 - 콜백에 사용하고 반복하는 일을 할 때, 마지막 반환 값이 반환되고, 그 값은 궁극적으로 기능의 을 나누기 최초의 return 문에서의 행동이다.
감사합니다. 내가했던 것처럼 그것을 구현하는 명확한 이해를 얻으려고 노력하고있다. 실제로 첫 번째 시도에서 현재 코드를 가지고 있지만 하나의 함수로 압축하려고했습니다. 내 현재 버전을 작동 시키려면 return 문을 삽입 할 때 다소 추측되었습니다. 두 반환 문장이 작동하는 방식에 대한 내 논리가 맞다고 생각하지만 올바르게 다시 생각하려고 노력 중입니다. – HelloWorld
@HelloWorld : 귀하의 코드와 귀하의 이해가 모두 좋습니다. 여러분이했던 것처럼 익명의 함수를 사용하는 것이 좋습니다. 내부 함수를 작게 유지하면 가독성이 떨어집니다. –