>  기사  >  웹 프론트엔드  >  JavaScript 함수 줄 바꿈이 세미콜론을 잘못 해석하여 오류를 반환하는 이유는 무엇입니까?

JavaScript 함수 줄 바꿈이 세미콜론을 잘못 해석하여 오류를 반환하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-24 08:45:30499검색

Why Do JavaScript Function Line Breaks Misinterpret Semicolons and Return Errors?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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