콘솔에서 JavaScript 변수를 선언하면 \'정의되지 않음\'이 발생하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-10-20 08:43:30
원래의
585명이 탐색했습니다.

Why Does Declaring JavaScript Variables at the Console Result in

콘솔에서 JavaScript 변수를 선언할 때 콘솔 출력이 "정의되지 않음"인 이유는 무엇입니까?

var a;를 사용하여 콘솔에서 JavaScript 변수를 선언할 때; , 콘솔에 "정의되지 않음"이 인쇄되므로 당황스러워 보일 수 있습니다. 그러나 이러한 동작은 단순히 선언문에 초기화 프로그램이 없기 때문에 발생하는 것은 아닙니다.

실제 이유: Eval 문

이 동작의 원인은 다음과 같습니다. eval 문의 작동. 표현식이나 명령문을 평가할 때 eval 문은 그 결과를 해석합니다. 그러나 결과가 값인 경우 eval은 해당 값을 반환합니다. 그렇지 않고 결과가 비어 있으면(var a;의 경우처럼) eval은 정의되지 않은 값을 반환합니다.

변수 선언을 표현식으로

흥미롭게도 JavaScript는 var를 처리합니다. 에이; 선언문을 명령문이 아닌 표현식으로 사용합니다. 이는 결과가 비어 있는 결과를 반환한다는 의미입니다. 따라서 var a; 콘솔에서 처리되면 eval 문은 빈 결과를 효과적으로 해석하고 정의되지 않은 값을 반환한 다음 콘솔에 인쇄됩니다.

무시된 선언

어떤 경우에는 결과가 비어 있지 않은 명령문이 있는 경우 후속 변수 및 함수 선언은 콘솔에서 무시될 수 있습니다. 예를 들면 다음과 같습니다.

var a = 3;
undefined

var a = 3; a = 4;
4

var a = 3; a = 4; var a = 5; function f() {};
4
로그인 후 복사

이는 비어 있지 않은 결과가 나타나면 SourceElements(선언 포함)의 평가가 중지되어 결과의 빈 결과 대신 해당 문의 결과가 인쇄되기 때문입니다.

함수 선언과 표현식

함수 선언과 표현식에서는 또 다른 미묘한 차이가 발생합니다. 함수 f() {}를 사용하여 함수를 선언하면 함수 선언 문으로 처리되어 빈 결과를 반환하고 콘솔에 "정의되지 않음"이 인쇄됩니다. 그러나 (function f() {})를 사용하여 함수를 정의하면 함수 표현식으로 처리되어 함수 자체로 평가되어 콘솔에 그대로 인쇄됩니다.

위 내용은 콘솔에서 JavaScript 변수를 선언하면 \'정의되지 않음\'이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!