>  기사  >  웹 프론트엔드  >  JavaScript_javascript 기술의 변수 정의 및 저장 소개

JavaScript_javascript 기술의 변수 정의 및 저장 소개

WBOY
WBOY원래의
2016-05-16 16:22:591147검색

C나 Java와 같은 프로그래밍 언어와 달리 JavaScript의 변수는 유형이 지정되지 않으며 모든 변수 정의는 var라는 키워드를 사용합니다.


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

var a;
var m, n;
var x=42, y="테스트";


변수가 정의된 후 값이 할당되지 않으면 변수의 값은 정의되지 않습니다. 예를 들어 위 코드에서 a, m, n 세 변수의 값은 모두 정의되지 않았습니다.

JS의 변수는 유형이 없기 때문에 다음과 같이 동일한 변수에 서로 다른 유형의 값을 할당하는 것이 완전히 가능합니다.


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

var b = "온도";
console.log(typeof b);//string
b = 108;
console.log(typeof b);//번호


동일한 변수에 대한 다양한 유형의 할당 외에도 JavaScript는 변수를 반복적으로 정의할 수도 있습니다. 이렇게 하면 처음 이후의 변수 정의 문은 할당 문과 동일합니다.


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

var c = "안녕하세요";
console.log(c);//안녕하세요
var c = true;
console.log(c);//true


ECMAScript 표준의 엄격 모드에서 모든 변수 정의는 var 키워드를 사용해야 합니다. 엄격 모드를 사용하지 않는 경우 JS 프로그램이 정의되지 않은 변수에 값을 할당하면 프로그램은 JS 전역 개체의 변수와 동일한 이름의 속성을 생성합니다. 즉, 새로운 전역 변수가 생성됩니다. 이러한 접근 방식은 많은 문제(예: 여러 JS 프로그램 간의 전역 변수 오염 등)를 유발하고 이후 유지 관리에 많은 문제를 가져오므로 실제 개발 프로세스에서는 이러한 접근 방식을 최대한 피해야 합니다.

변수 저장

정의된 변수가 전역 변수이고 변수 정의 과정에서 var 키워드가 사용되지 않으면 변수는 전역 개체의 속성으로 존재하게 되며, 이 변수의 해당 속성에 접근하여 얻을 수 있습니다(global 객체) 또는 삭제 키워드를 사용하여 전역 객체에서 삭제할 수 있습니다:


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

var e = "globalVariableValue";//함수 외부에서 정의된 경우 전역 변수이지만 "this"에 저장되지 않습니다.
f = "globalVariableValue2";
this.g = "globalVariableValue3";
console.log(this.e);//정의되지 않음
console.log(this.f);//globalVariableValue2
console.log(this.g);//globalVariableValue3

f 삭제
g 삭제;
console.log(this.f);//정의되지 않음
console.log(this.g);//정의되지 않음


JavaScript의 각 함수 호출에 대해 JavaScript는 함수에 정의된 로컬 변수를 저장하기 위해 로컬 개체를 생성합니다. 함수 내에 정의된 중첩 함수가 있는 경우 JavaScript는 함수가 정의된 후 로컬 개체를 생성합니다. 로컬 개체 내부의 로컬 개체입니다. 함수의 경우 내부에 중첩된 함수 정의 레이어가 있는 만큼 중첩된 로컬 개체의 레이어가 있습니다. 이 로컬 객체를 "함수 호출 객체"라고 합니다(ECMAScript 3에서는 "호출 객체", ECMAScript 5에서는 "선언적 환경 레코드"로 이름이 바뀌었지만 개인적으로는 ECMAScript 3의 이름이 이해하기 더 쉽다고 생각합니다).

전역 개체와 달리 JavaScript는 이러한 로컬 개체(함수 호출 개체)에 액세스할 수 있는 방법을 제공하지 않습니다. 따라서 개발자는 이러한 로컬 개체에 대해 작업을 수행할 수 없습니다. 그러나 이러한 함수 호출 객체를 이해하는 것은 변수 범위 및 클로저와 같은 JavaScript의 일부 개념을 이해하는 데 큰 도움이 될 것입니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.