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