>  기사  >  웹 프론트엔드  >  Return 문이 줄바꿈되었을 때 JavaScript 함수가 \"undefine\"을 반환하는 이유는 무엇입니까?

Return 문이 줄바꿈되었을 때 JavaScript 함수가 \"undefine\"을 반환하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-24 08:55:30584검색

Why Do JavaScript Functions Return

Return 문이 줄 바꿈되면 JavaScript 함수가 "정의되지 않음"을 반환합니다.

특정 시나리오에서는 JavaScript 함수가 다음과 같은 이유로 예상 개체를 반환하지 못할 수 있습니다. return 문 뒤의 줄 바꿈. 이 문제는 예제 코드에서 볼 수 있듯이 개체 정의가 줄 바꿈으로 return 문과 분리될 때 발생합니다.

function foo1(){
    return {msg: "hello1"};
}
function foo2(){
    return
    {msg: "hello2"};
}

// output = "foo1 =  {"msg":"hello1"}"
console.log('foo1 = ' , JSON.stringify(foo1())); 

//output = " foo2 =  undefined "
console.log('foo2 = ' , JSON.stringify(foo2()));

이러한 함수 간의 주요 차이점은 return 문과 return 문 사이의 줄 바꿈입니다. foo2의 객체 정의. JavaScript의 자동 세미콜론 삽입(ASI) 메커니즘은 foo2의 return 문 뒤에 세미콜론을 잘못 삽입하여 객체를 반환하지 않고 함수 실행을 효과적으로 종료합니다. 이로 인해 foo2()를 문자열로 변환할 때 "정의되지 않음"이 출력됩니다.

이 문제를 방지하려면 다음과 같은 여러 접근 방식을 취할 수 있습니다.

  • 명시적 세미콜론: ASI가 의도하지 않은 세미콜론을 삽입하는 것을 방지하려면 return 문 뒤에 세미콜론을 추가하세요.
  • 괄호(그룹화 연산자): return 문과 개체 정의를 괄호로 묶어 JavaScript가 개체를 해석하도록 합니다.
  • 객체를 같은 줄에 배치: ASI가 간섭하지 않도록 return 문과 객체 정의 사이에 줄바꿈을 피하세요.

미적 고려 사항이나 코드 가독성이 ASI 문제의 가능성보다 중요한 경우 개발자는 응답에 제공된 예에서 볼 수 있듯이 그룹화 연산자를 사용하여 표현식을 그룹화하도록 선택할 수 있습니다. 그러나 이 접근 방식은 기본적으로 선호 사항이며 코드 기능에 영향을 미치지 않습니다.

위 내용은 Return 문이 줄바꿈되었을 때 JavaScript 함수가 \"undefine\"을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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