JavaScript 함수 반환 오류: 줄 바꿈이 세미콜론을 잘못 해석함
JavaScript에서 함수는 일반적으로 데이터나 기능을 나타내는 개체를 반환하는 데 사용됩니다. 그러나 이 질문에서 예시된 것처럼 return 문과 객체 사이에 줄 바꿈이 있으면 미묘한 문제가 발생합니다.
문제:
제공된 코드에서 , 다음 두 함수는 문제를 보여줍니다.
<code class="javascript">function foo1(){ return {msg: "hello1"}; } function foo2(){ return {msg: "hello2"}; }</code>
foo1()을 예상대로 호출하면 "{"msg":"hello1"}" 개체가 반환됩니다. 그러나 foo2()를 호출하면 이상하게도 "정의되지 않음"이 반환됩니다.
이유:
이 함수들 사이의 차이점은 foo2()의 객체 앞에 배치된 줄 바꿈에만 있습니다. ). JavaScript는 ASI(자동 세미콜론 삽입)를 사용하여 다양한 상황에서 생략된 세미콜론을 추론합니다.
foo1()에서는 ASI로 인해 암시적 세미콜론이 return 문 뒤에 배치되어 객체와 분리됩니다. 이를 통해 함수는 객체를 올바르게 반환할 수 있습니다.
그러나 foo2()에서 줄 바꿈은 ASI에게 객체에 도달하기 전에 명령문이 완료되었음을 확신시킵니다. 결과적으로 개체는 별도의 문으로 해석되어 반환되지 않습니다.
해결 방법:
이 문제를 해결하려면 return 문과 개체 사이에 줄 바꿈을 추가하세요. 피해야합니다. 또한 명확성을 위해 일부 개발자는 그룹화 연산자를 사용하여 개체를 명시적으로 래핑합니다.
<code class="javascript">function foo2(){ return ({msg: "hello2"}); }</code>
그룹화 연산자는 개체를 괄호로 묶어 줄 바꿈이 있어도 개체가 단일 문으로 해석되도록 합니다. 현재.
위 내용은 JavaScript 함수 줄 바꿈이 세미콜론을 잘못 해석하여 오류를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!