>웹 프론트엔드 >JS 튜토리얼 >중괄호가 Case 문에서 화살표 기능을 중단하는 이유는 무엇입니까?

중괄호가 Case 문에서 화살표 기능을 중단하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-11 03:06:11309검색

Why Do Curly Braces Break My Arrow Function in a Case Statement?

중괄호 in Arrow Functions: A Puzzle Unveiled

Dan Abramov의 강의에서 흥미로운 질문이 제기됩니다. 중괄호가 함수를 유발하는 이유 테스트에 실패하려면? 이 수수께끼를 조사해 보겠습니다.

문제의 코드는 Case 문 내의 화살표 함수입니다.

case 'toggleTodo' :
        return (
            state.map( (one) => {
                oneTodo( one, action )
            })
        );

중괄호 { }가 포함되면 테스트가 실패합니다. . 그러나 생략하면 코드가 완벽하게 작동합니다. 내부적으로 일어나는 일은 다음과 같습니다.

중괄호의 힘: 블록 및 명시적 반환

함수 본문을 중괄호로 묶으면 차단. 블록에는 각각 세미콜론으로 끝나는 여러 문이 포함될 수 있습니다. 블록에서 값을 반환하려면 return 문을 명시적으로 사용해야 합니다.

중괄호가 포함된 화살표 함수의 경우 본문은 다음에 대한 호출로만 구성됩니다. oneTodo(). 명시적인 return 문이 없기 때문에 함수는 정의되지 않은을 반환합니다. 이러한 예상치 못한 동작으로 인해 테스트가 실패하게 됩니다.

이를 수정하려면 oneTodo() 호출의 결과를 명시적으로 반환해야 합니다.

(one) => {
    return oneTodo(one, action);
}

간결한 본문: 단순함을 위해 중괄호 생략

중괄호를 사용하면 화살표 기능이 간결한 본문을 갖습니다. 간결한 본문은 결과가 암시적으로 반환되는 단일 표현식으로 구성됩니다.

중괄호가 없는 예에서 간결한 본문은 다음과 같습니다.

(one) => oneTodo( one, action )

이 표현식은 다음과 같습니다.

return oneTodo( one, action );

중괄호를 생략하면 명시적인 구문 없이도 동일한 결과를 얻을 수 있습니다. return 문.

차이점 이해

핵심 내용은 블록(으로 표시됨) 간의 차이점을 이해하는 것입니다. 중괄호) 및 간결한 본문( 중괄호). 블록에는 명시적인 return 문이 필요한 반면 간결한 본문은 암시적으로 단일 표현식의 결과를 반환합니다.

따라서 Case 문에서 화살표 함수를 사용할 때는 중괄호와 명시적인 return 함수 본문에 여러 개의 명령문이 필요한 경우. 표현이 하나만 필요한 경우 중괄호를 생략하면 간결한 본문을 만들 수 있습니다.

위 내용은 중괄호가 Case 문에서 화살표 기능을 중단하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.