JavaScript 변수 선언과 변수 var 정의에 대한 다양한 이해와 분석

伊谢尔伦
풀어 주다: 2017-07-18 10:57:26
원래의
1474명이 탐색했습니다.

문제를 설명하기 위해 간단한 예를 살펴보겠습니다.

if (!("a" in window)) {
    var a = 1;
}
alert(a);
로그인 후 복사

우선 모든 전역 변수는 window의 속성입니다. var a = 1; 문은 window.a = 1;

을 사용할 수 있습니다. 다음 방법 창


에서 전역 변수가

"변수 이름"으로 선언되었는지 확인합니다. 둘째, 모든 변수 선언은 범위의 맨 위에 있습니다. 비슷한 예를 살펴보세요.

코드 복사 코드는 다음과 같습니다.

alert("a" in window);
var a;
로그인 후 복사

이 때, 문이 경고 이후에 있더라도 경고 팝업은 여전히 ​​유효합니다. 이는 JavaScript 엔진이 먼저 모든 변수 선언을 스캔한 다음 이러한 변수 선언을 맨 위로 이동하기 때문입니다. 최종 코드 효과는 다음과 같습니다.

var a;
alert("a" in window);
로그인 후 복사

셋째, 이 질문의 의미는 변수 선언은 고급이지만 변수 할당은 고급이 아니라는 점을 이해해야 합니다. 이 코드 줄에는 변수 선언과 변수 할당이 포함되어 있기 때문입니다.

문을 다음 코드로 분할할 수 있습니다.

var a;    //声明
a = 1;    //初始化赋值
로그인 후 복사

요컨대, 변수 선언과 할당을 함께 사용하면 JavaScript 엔진이 자동으로 두 부분으로 나누어 변수를 미리 선언하고 할당하지 않습니다. 코드 실행에 영향을 미치고 예측할 수 없는 결과가 발생할 수 있으므로 단계를 고급으로 진행합니다.

질문의 코드는 다음과 같습니다.

var a;
if (!("a" in window)) {
    a = 1;
}
alert(a);
로그인 후 복사

위 예제 질문의 분석에 따르면 변수 선언 시 지역 변수인 경우 앞에 var를 추가해야 합니다. 전역 변수는 var를 추가할 필요가 없습니다(전역 변수를 제한하는 것이 가장 좋습니다). 지역 변수를 사용해 보세요.

var 사용의 특징은 다음과 같습니다

var 문을 사용하여 변수 선언 여러 번 반복하는 것은 합법적일 뿐만 아니라 오류도 발생하지 않습니다.
재사용된 문에 초기값이 있으면 할당문의 역할만 합니다.
재사용된 선언에 초기 값이 없으면 원래 변수에 아무런 영향을 미치지 않습니다.
var 없이 선언된 변수는 전역 변수로 존재합니다. var로 선언된 변수는 특히 함수 내에서 지역 변수입니다. 게다가 테스트 후에는 var를 사용하여 선언하는 것이 var를 사용하지 않는 것보다 빠릅니다. 함수에 로컬 변수를 최대한 많이 설정하면 안전하고 빠르며, 함수 내 전역 변수의 무작위 조작으로 인해 변수 연산이 더 합리적으로 발생하지 않습니다.

객체를 선언할 때는 새로운 방식보다 훨씬 빠른 객체의 자기 얼굴 방식을 사용하는 것이 가장 좋습니다.

변수 이름은 의미와 사양을 고려하여 변수 이름이 약간 길어질 수 있지만 변수 이름의 길이도 코드 실행 속도에 영향을 미치므로 주의하세요. 긴 변수 이름을 사용한 선언은 짧은 변수 이름만큼 빠르게 실행되지 않습니다.

주제는 다음과 같습니다. 두 경고의 출력 결과는 무엇입니까?

<script
type="text/javascript">
    var a = 1;
    var a;
    alert(typeof a);
(function () {
        b = &#39;-----&#39;;
        var b;        
    })();
    alert( typeof b);
</script>
로그인 후 복사

Chrome에서 코드를 실행하면 코드의 올바른 결과는 1.숫자 2.정의되지 않음입니다. 여기서 살펴보는 것은 사전에 자바스크립트 변수 선언의 개념이다.

다음과 같은 또 다른 예를 살펴보겠습니다.

test();
function test(){    
alert("Hello World!");
}
로그인 후 복사

프로그램은 오류를 보고하지 않지만 실행 결과는 Hello World!입니다. 원리: 컴퓨터가 명령문 실행을 시작하기 전에 먼저 모든 함수 정의를 검색한 다음 관련 함수를 저장합니다.
질문 1:
var a = 1;
var a;
2번째 줄에서 변수 a를 선언하는 것은 맨 위에서 a를 선언하는 것과 같고, 그 다음 첫 번째 문장은 a를 다시 선언한 다음 값을 1에 할당하는 것입니다. 따라서 a 유형은 숫자입니다
질문 2:
b = '----';
var b;
질문 2의 분석: b='----', 프로그램은 먼저 변수가 있는지 알아냅니다. 문맥에서 b의 선언(있는 경우)에는 '----' 값이 직접 할당됩니다. 그러나 Alert(typeof b);는 함수 외부에 있으며 모두 정의되지 않은 전역 변수 b를 출력합니다.
참고: 변수 할당은 미리 수행되지 않습니다.

위 내용은 JavaScript 변수 선언과 변수 var 정의에 대한 다양한 이해와 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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