"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > JavaScript는 \"{}\"를 어떻게 해석하고 블록과 객체를 구별합니까?

JavaScript는 \"{}\"를 어떻게 해석하고 블록과 객체를 구별합니까?

2024-11-02에 게시됨
검색:906

How Does JavaScript Interpret \

JavaScript가 "{}"를 빈 블록으로 해석하는 경우

JavaScript에서 빈 중괄호 쌍 "{}"이 다음과 같은 경우 발생하면 인터프리터는 처음에 이를 빈 객체가 아닌 빈 코드 블록으로 해석합니다. 이 동작은 "Block"이 기본 문 유형 중 하나인 언어 문법에서 비롯됩니다.

Block 대 Object Literal

JavaScript는 Block 문을 다음과 같이 정의합니다. 일련의 명령문을 포함하는 중괄호 쌍입니다. 반면에 객체 리터럴은 ExpressionStatements이며 중괄호로 묶인 키-값 쌍을 갖습니다.

해석 규칙

JavaScript 파서는 "{}" 해석을 ​​우선시합니다. 객체 리터럴보다 더 구체적인 구조이기 때문에 블록으로 사용됩니다. 중괄호가 키-값 쌍을 묶거나 "const" 또는 "let"과 같은 키워드가 앞에 오지 않으면 빈 블록으로 처리됩니다.

Node.js와 Firebug 간의 불일치

제공된 답변에서 언급했듯이 Node.js와 Firebug가 "{}"를 해석하는 방식에는 차이가 있습니다.

  • Node.js: "{}"를 Node.js는 이를 부울로 변환하고 false로 평가합니다.
  • Firebug: "{}"를 명령문으로 해석하면 Firebug는 빈 블록을 평가하지 않고 "정의되지 않음"을 반환합니다.

이 차이는 Node.js가 주로 JavaScript를 표현식으로 평가하는 반면 Firebug 및 Chrome 개발 도구는 명령문을 평가한다는 사실에서 발생합니다.

JavaScript 엔진의 데모

V8(Chrome의 엔진) 및 SpiderMonkey(Firefox의 엔진)에서 제공된 코드 조각에 표시된 것처럼 파서는 처음에 중괄호를 확인하고 발견되면 블록으로 구문 분석을 진행합니다.

요약하면 JavaScript의 해석은 다음과 같습니다. 빈 블록인 "{}"는 Block 문을 우선시하는 문법 규칙을 따릅니다. Node.js와 Firebug 간의 불일치는 Node.js가 이를 표현식으로 처리하고 Firebug를 명령문으로 처리하는 서로 다른 평가 접근 방식으로 인해 발생합니다.

릴리스 선언문 이 글은 1729221795에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3