JavaScript의 {} 해석에서 블록과 객체 비교
코드를 구문 분석할 때 JavaScript는 "{}"를 다음 중 하나로 해석하는 모호함에 직면합니다. 빈 블록 또는 빈 개체. 어떤 해석을 사용할지 결정하기 위해 JavaScript는 사양에 정의된 문법을 따릅니다.
언어 사양에 따라 명령문은 Block, VariableStatement, EmptyStatement 또는 ExpressionStatement 형식을 취할 수 있습니다. 블록은 "{}" 뒤에 "}"로 끝나는 선택적 명령문 목록이 오는 것으로 정의됩니다.
따라서 JavaScript가 "{}"를 발견하면 "{}" 때문에 먼저 이를 블록으로 간주합니다. "는 블록의 구문과 일치합니다. 파서가 블록으로 해석할 수 없는 경우에만 {}를 ExpressionStatement 범주에 속하는 빈 객체로 간주합니다.
제공된 예시에서 "{}[]"는 다음과 같이 해석됩니다. 빈 블록 뒤에 단항 더하기 및 빈 배열이 옵니다. 빈 블록은 아무 작업도 수행하지 않으며 배열은 빈 문자열로 변환된 후 숫자(0)로 변환됩니다.
Firebug는 이 입력을 명령문으로 해석하여 정의되지 않은 것으로 평가되는 빈 블록을 생성합니다. 반면 Node.js는 이를 표현식으로 처리하므로 블록으로 구문 분석할 수 없으며 {}로 평가됩니다.
이러한 불일치는 각 JavaScript 엔진의 입력에 대한 해석이 다르기 때문에 발생합니다. Firebug 및 Chrome 개발 도구는 이를 문으로 처리하여 {}를 빈 블록으로 간주하는 반면, Node.js는 이를 표현식으로 처리하여 빈 객체를 생성합니다.
위 내용은 {}를 구문 분석할 때 무엇으로 해석합니까: 블록 또는 객체?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!