JavaScript에는 전역, 함수 범위 및 블록 범위의 세 가지 범위가 있습니다. 가변 범위- 이것은 지역이다 소스 코드변수와 함수를 볼 수 있고 사용할 수 있는 프로그램. 전역 범위는 최상위 코드라고도 합니다.

전역 변수

함수나 블록 외부에서 선언된 변수를 전역 변수라고 합니다. 전역 변수는 소스 코드의 모든 위치에서 사용할 수 있습니다.

바넘 ​​= 5; 함수 foo() ( console.log(num); ) foo(); // 5 console.log(숫자); // 5 ( console.log(num); // 5 )

지역 변수

함수 내에서 선언된 변수를 지역 변수라고 합니다. 지역 변수는 선언된 함수의 본문 내 어디에서나 사용할 수 있습니다. 지역 변수는 새 함수가 호출될 때마다 생성되고 종료될 때(함수가 종료될 때) 소멸됩니다.

함수 foo() ( var num = 5; console.log(num); ) foo(); // 5 console.log(typeof num); // 한정되지 않은

지역 변수는 같은 이름의 전역 변수보다 우선합니다. 즉, 지역 변수는 전역 변수가 아닌 함수 내부에서 사용됩니다.

var x = "전역"; // 전역 변수 function checkscope() ( var x = "local"; // 전역과 같은 이름의 지역 변수 document.write(x); // 전역 변수가 아닌 지역 변수를 사용함 ) checkscope(); // => "로컬" 시도 »

블록 변수

블록 내부에 선언된 변수 예어 let 은 블록 이라고 합니다. 블록 변수는 선언된 블록 내 어디에서나 사용할 수 있습니다.

숫자 = 0; ( let num = 5; console.log(num); // 5 ( let num = 10; console.log(num); // 10 ) console.log(num); // 5 ) console.log(num) ; // 0

재공지

var 키워드를 사용하여 동일한 이름(동일한 범위에서)의 변수를 다시 선언하면 아무 일도 일어나지 않습니다.

바라 = 10; 변수 a; 콘솔 로그(a); // 십

재선언 후에 초기화가 수행되면 이러한 명령어는 새 값의 일반적인 할당처럼 작동합니다.

바라 = 10; 변수 a = 5; // a = 5와 동일; 콘솔 로그(a); // 5

let 키워드를 사용하여 동일한 이름(동일한 범위에서)의 변수를 다시 선언하면 오류가 발생합니다.

바라 = 10; 하자; // 오류.

범위 체인

다음 예를 고려하십시오.

바넘 ​​= 5; 함수 foo() ( var num2 = 10; 함수 bar() ( var num3 = 15; ) )

이 코드에는 전역 범위, foo() 함수 범위 및 bar() 함수 범위의 세 가지 범위가 있습니다. 변수 num과 함수 foo()는 전역 범위에서 정의됩니다. num2 변수와 bar() 함수는 foo() 함수의 범위에 정의되어 있으며 전역 범위의 num 변수도 사용할 수 있습니다. bar() 함수의 범위에는 bar() 함수 내에서만 사용할 수 있는 하나의 변수 num3 이 포함됩니다. bar() 함수의 범위에서 다른 두 범위의 변수도 액세스할 수 있습니다. 왜냐하면 그것들이 그것의 부모이기 때문입니다. 이 예의 범위 체인은 아래 그림에 나와 있습니다.

그림에서 다양한 스코프가 다양한 색상의 직사각형으로 표시됩니다. 범위 체인의 내부 범위는 외부 범위의 모든 항목에 액세스할 수 있지만 외부 범위는 내부 범위의 모든 항목에 액세스할 수 없습니다.

범위 체인이 주문됩니다. 인터프리터는 식별자에 대한 범위 체인을 내부가 아닌 외부에서 검색합니다. 이는 이름 조회가 식별자에 액세스한 범위에서 시작됨을 의미합니다. 식별자 이름이 발견되면 검색이 종료됩니다. 현재 범위에서 이름을 찾을 수 없는 경우 다음(외부) 범위에서 검색을 수행하는 식으로 검색을 수행하므로 찾은 범위의 식별자가 사용됩니다. 식별자가 범위에서 발견되지 않으면 JavaScript는 다음 오류를 생성합니다.

var str = "전역"; 바넘 ​​= 5; function foo() ( var str = "local"; // 지역 변수 사용 str num = 10; // 전역 변수 num 사용 // alert(x); // 오류. 변수 x가 범위에 없음 ) foo( ) ; 경고(str); // "전역" alert(num); // 십

함수 본문에서 선언되지 않은 변수에 값을 할당하면 함수 호출 시 전역 범위에 동일한 이름의 변수가 없으면 새 전역 변수가 생성됩니다.

함수 foo() ( 숫자 = 2; ) foo(); // 새로운 전역 변수 생성 num alert(num); // 2

리프트 광고

JavaScript에서 선언된 변수는 범위를 기준으로 어디에서나 사용할 수 있습니다. 즉, 코드에서 변수를 선언하기 전에도 변수를 볼 수 있습니다. JavaScript의 이 기능을 비공식적으로 호이스팅이라고 합니다. 프로그래밍 코드변수 선언이 암시적으로(초기화 없이) 범위의 맨 위로 올라가는 것처럼 작동합니다.

다음 코드 스니펫을 고려하십시오.

var str = "전역"; function foo() ( alert(str); // 정의되지 않음 var str = "local"; alert(str); // "local" ) foo();

코드를 보면 지역 변수 str의 선언이 아직 실행되지 않았기 때문에 첫 번째 경고가 "global" 문자열을 출력해야 한다고 생각할 수 있습니다. 그러나 실제 출력은 undefined 입니다. 선언 호이스팅 덕분에 위의 함수는 변수 선언이 함수의 맨 위로 호이스트되는 아래 구현과 동일합니다.

Function foo() ( var str; // 함수 시작 부분에 지역 변수 선언 alert(str); // 여기에서 사용할 수 있지만 초기화되지 않음 str = "local"; // 여기에서 초기화됨 alert( str); // 그리고 여기에 예상 값이 있습니다 - "local")

전역 범위에도 동일하게 적용되며 하단에 선언된 변수는 상단에서 사용할 수 있습니다.

경고(숫자); // 정의되지 않음 var num = 10; 경고(숫자); // 십

전역 변수란 무엇입니까? 변수는 프로그램 실행의 어느 지점에서나 "표시"되며 어디에서나 읽고 덮어쓸 수 있습니다.
일반적으로 전역 변수는 블록(()) 외부의 프로그램 맨 처음에 정의됩니다.
Js의 경우 스크립트 또는 모든 기능 뒤에 설정됩니다.

안녕하세요 = 안녕하세요 ; // 전역 변수를 설정하고 확인
문서. writeln (->1 + hello + every one
); //->1 안녕하세요 여러분

사실이면)
//if(거짓)
{
var hello = Hello 돌리 및 ; // 이것도 전역
세계 = 세계; //전역
var cont = , 계속 //전역
문서. writeln (->1.2 + hello + world + cont +
);
//1.2 Hello Dolly와 세계 여러분, 계속합니다.
}
문서. writeln (->2 + hello + world + cont +
);
//->2 Hello Dolly와 World, 계속합니다.


사실이라면 우리는 답을 얻습니다

->1 안녕하세요 여러분
->1.2 Hello Dolly와 세계 여러분, 계속합니다
->2 Hello Dolly와 세계, 계속합니다


실행 중단

따라서 var의 사용은 전역 범위에 어떤 식으로든 영향을 미치지 않는 것으로 나타났습니다. 프로시저 외부의 스크립트에서 언급된 변수는 if while for 블록 및 기타 범위가 루프 내부에서도 전역으로 유지되는 경우() 주위에 괄호로 묶인 경우에도 전역으로 간주됩니다.

결론, 간략하게

  • 전역 범위에서 사용되는 변수의 경우 var의 존재는 중요하지 않습니다.
  • if while 이후 블록은 로컬 범위를 생성하지 않습니다(다른 언어에서와 같이)
현지의 변수 - 변수실행 블록(함수) 내부에 설정되며 다른 함수에 영향을 주지 않습니다. 그리고 외부 환경, 즉. 글로벌 지역.

소년 = 존;
did = 케니를 죽인다 ; // 그래서 2개의 전역 변수가 있습니다.
함수 doit()
{
//print는 이미 --1을 전달했으며 데이터를 변경합니다.
var 소년 = 게리 ; // 로케일 생성
한 = 애니를 도왔습니다 ; // 전역 변경
;
문서. writeln (--2 + 소년 + + 한 +
);
//--2 Gary가 Annie를 돕습니다.
;
//이제 함수 내부에서 지역 및 전역 변수를 설정합니다.
var good = 그는 좋은 소년이었다
; //장소!
나쁜 = 그는 나쁜 여자를 좋아한다
; //전역
}
;
문서. writeln(--1+소년++did+
);
//--1 존이 케니를 죽입니다.
해();
//--2 Gary가 Annie를 돕습니다.
문서. writeln (--3 + 소년 + + 한 +
);
//--3 Jhone은 Annie를 돕습니다.
;
사실이면)
//if(!거짓)
{
문서. writeln (--4 + 좋음);
//이 블록을 실행하면 오류가 발생합니다.
// 우리는 이제 지역 범위를 벗어났습니다.
// doit() 함수이므로 var를 통해 제공됩니다.
//변수가 없을 뿐
}
문서. writeln (--5 + 나쁨);
//--5 그는 나쁜 여자를 좋아한다


결과:

1 존이 케니를 죽인다
--2 게리가 애니를 돕습니다.
--3 Jhone이 Annie를 돕습니다.
--5 그는 나쁜 여자를 좋아한다


결론

자바스크립트의 지역변수

  • var는 지역 변수를 선언하여 함수 내부에서 작동합니다. 이것이 그의 주요 임무입니다.
권고사항 및 비고
  • Javascript는 함수 내에서 (?) 지역 변수만 가능하다는 점에서 이미 C와 매우 다릅니다.
  • var를 사용하거나 전역 범위에서 사용하지 않는 것은 개인적인 경험. 그러나 나에게는 게으르지 않는 것이 좋습니다. 펄에서는 use strict라고 합니다.
>>> 전역 범위에서 사용되는 변수의 경우 var의 존재 여부는 중요하지 않습니다.

중요한. 첫째, vars는 삭제할 수 없습니다(delete 사용). 두 번째로, 인스턴스화는 "0 라인"(작업 "라인 바이 라인" 작업 전)에서 이루어지며, 여기서 정의되지 않은 값이 즉시 할당되고 그 다음에야 변수가 새 값을 수신할 수 있습니다(또는 수신하지 않을 수 있음).

var glb_1 = 1;
if (거짓) (var glb_2 = 2; glb_3 = 3;)

alert(glb_1) // 인스턴스화되고 1로 설정됨
alert(glb_2) // 인스턴스화되고 '정의되지 않음'으로 설정됨
alert(glb_3) // 변수가 전혀 아님(var 없음), 호출 오류

좋은 하루, JavaScript 팬과 충실한 구독자. 오늘의 간행물에서는 방법에 대해 자세히 알려 드리겠습니다. 자바스크립트 전역변수와 지역. 나는 확실히 중요한 용어에 대한 정의를 제공하고, 변수 선언 및 초기화의 기능에 대해 이야기하고, 범위가 무엇이며 생성된 요소가 범위에서 어떻게 작동하는지 설명합니다.

이 모든 것이 언어에 대한 가장 기본적이고 기본적인 지식에 적용됩니다. 이 모든 것을 이해하지 못하면 js로 프로그래밍 기술을 발전시킬 수 없습니다. 또한 주요 개념은 이 전문 분야뿐만 아니라 일반적으로 IT 분야에서도 유용할 것입니다. 자, 시작하겠습니다!

변수란 무엇이며 어떻게 생성됩니까?

변수는 메모리 영역이 할당되고 특정 값이 저장되는 프로그래밍 언어의 요소입니다.

변수는 다음과 같습니다. 큰 금액그리고 그들 모두는 고유한 이름을 가져야 합니다.

변수에는 전역 및 지역의 두 가지 종류가 있습니다. 그들의 차이점은 다른 지역변수의 가시성. 따라서 전역 요소는 전체 코드에서 볼 수 있고 로컬 요소는 선언된 작은 영역에서만 볼 수 있습니다.

그건 그렇고, 첫 번째 코드부터 논리적이고 이해하기 쉬운 이름으로 요소의 이름을 지정하십시오. 더 나아가 무거운 프로그램으로 작업할 때 일정 시간이 지나면 "aa1" 또는 "perem3"과 같은 의미를 기억하지 못할 것입니다.

그리고 제목은 전혀 의미가 없습니다! 아직 절반의 문제가 있지만 결국 당신의 글을 이해하는 것은 그렇게 어렵지 않습니다. 그리고 한 번도 들어본 적 없는 다른 프로그램의 작업을 완료하라는 작업이 주어진다면 어떻게 하시겠습니까? 이러한 이름으로 구문 분석 소프트웨어 구현좋은 시간을 많이 죽입니다.

표기법을 읽었으니 이제 변수 선언으로 돌아가 보겠습니다.

변수를 생성하려면 먼저 키워드를 작성해야 합니다. var, 이름 자체가 뒤에 옵니다. 다음과 같이 보입니다.

var text = "안녕하세요, 사용자!"

그런 다음 "var" 없이 텍스트에 액세스합니다.

텍스트 = "새 텍스트."

이 경우 값을 덮어씁니다.

더 나은 이해를 위해 단일 변수를 생성하는 예를 고려하십시오. 다시 쓰기 전과 후의 값을 참고하겠습니다.

1 2 3 4 var text = "안녕하세요, 사용자!"; 경고(텍스트); // "안녕하세요, 사용자!"를 출력합니다. text="새 텍스트!"; 경고(텍스트); // "새 텍스트!"를 출력합니다.

var text = "안녕하세요, 사용자!"; 경고(텍스트); // "안녕하세요, 사용자!"를 출력합니다. text="새 텍스트!"; 경고(텍스트); // "새 텍스트!"를 출력합니다.

전역 개체의 기능

js 코드에서 생성된 모든 객체는 전역과 지역으로 나뉩니다. 위에서 나는 그들 사이의 차이점이 무엇인지 설명했습니다. 이제 전역 개체를 자세히 살펴보겠습니다.

그것들은 코드의 메인 캔버스에 선언된 모든 함수와 변수입니다. 일부 기능 내부가 아닙니다. js의 모든 것은 자동으로 전역 객체의 속성이 되며, 이는 브라우저에서 word window 아래에 명시적으로 사용할 수 있습니다. 예를 들어 보십시오.

var 가격 = 145; // 전역 변수 생성

경고(window.price); // 응답: 145

지금까지는 모든 것이 간단하지만 함정에 대비하십시오. 때로는 변수 값을 저장하고 다시 쓰는 특성을 모르고 매우 덮어쓸 수 있습니다. 중요한 매개변수. 이러한 오류는 추적하기가 매우 어렵고 컴파일러의 도움으로 찾기가 불가능합니다. 따라서 다음 자료를 주의 깊게 분석하십시오.

함정 및 범위

문제를 더 잘 이해하기 위해 먼저 작은 프로그램, 여기서 함수에서 지역 변수를 만들고 경계 외부에서 전역 변수를 만듭니다.

함수 test() ( p = 2; 리턴 p; ) alert(p); // 정의되지 않은 p = "중요한 텍스트"; 경고(p); // "중요한 텍스트"를 출력합니다. test(); // 함수 호출 alert(p); // 2를 출력

처음에는 테스트 함수에서 로컬 변수를 2로 초기화한 다음 중요한 데이터를 저장하는 전역 텍스트 변수를 생성했습니다.

그리고 여기에 "수중 블록"이 나타납니다.

첫째, 오래된 JavaScript 표준의 규칙에 따라 요소 생성을 사용했기 때문에 모든 "p"변수는 할당 시점에만 생성되었습니다 (var 지시문을 사용할 때 변수는 값으로 즉시 생성됩니다. undefined, 초기화 중에는 "= » 값을 덮어씁니다.)

둘째, 이 경우 js는 기존 변수를 사용하거나 새 전역 변수를 만들어 암시적으로 생성된 요소에 값을 할당합니다. 따라서 위의 예에서는 테스트 함수를 호출한 후 전역 "p"의 값을 덮어씁니다.

충돌을 방지하려면 항상 var 키워드를 사용하십시오. 그런 다음 모든 개체가 명시적으로 선언되고 새 개체가 생성됩니다.

다음은 수정된 예입니다.

함수 test() ( var p = 2; 경고(p); 반환 p; ) 경고(p); // 정의되지 않음 var p = "중요 텍스트"; 경고(p); // "중요한 텍스트"를 출력합니다. test(); // 함수를 호출합니다. 이 경우 2를 출력합니다. alert(p); // "중요한 텍스트" 출력

이제 코드가 올바르게 작동합니다. 보시다시피 로컬 "p"의 범위는 테스트 함수의 범위 내에 있는 반면 글로벌 범위는 코드의 나머지 부분에 있습니다.

상수에 대한 몇 마디

다른 모든 프로그래밍 언어와 마찬가지로 JavaScript에도 상수가 있습니다. 뭔지 모르시는 분들을 위해 정의를 첨부하겠습니다.

상수는 값이 변경되지 않는 변수 유형입니다.

js의 구문 규칙에 따르면 이름은 항상 소문자(대문자)로 작성됩니다. 예를 들어,

var MAIN_COLOR = "#fff"

스크립팅 언어가 아님 기술적 수단, 상수를 진정으로 일정하게 만듭니다. 사실 덮어쓸 수 있는 일반 변수입니다. 그러나 규칙에 따라 개발자는 이러한 요소를 다음과 함께 사용합니다. 대문자이름에서 상수로 그리고 코드를 작성하는 과정에서 값이 변경되지 않습니다.

상수의 주요 목적은 복잡한 문자열, 중요한 숫자 또는 기타 값을 저장하는 것입니다. 이 값은 다시 작성할 때 오타를 만들기 쉽고 어떤 경우에도 변경해서는 안 되며 코드를 단순화하는 것입니다. 예를 들어 상수는 자주 반복되는 요청을 저장할 수 있습니다.

변수는 정보를 저장하기 위한 "컨테이너" 역할을 합니다.

학교 대수학을 기억하십니까?

학교 대수학을 기억하십니까? x=5, y=6, z=x+y

문자(예: x)를 사용하여 값(예: 5)을 저장할 수 있고 위의 정보를 사용하여 z의 값이 11임을 계산할 수 있다는 것을 기억하십니까?

이 글자들은 변수, 변수는 값(x=5) 또는 표현식(z=x+y)을 저장하는 데 사용할 수 있습니다.

자바스크립트 변수

대수와 마찬가지로 JavaScript 변수는 값이나 표현식을 저장하는 데 사용됩니다.

변수는 x와 같은 짧은 이름이나 carname(자동차 이름)과 같은 더 설명적인 이름을 가질 수 있습니다.

JavaScript 변수 이름에 대한 규칙:

  • 변수 이름은 대소문자를 구분합니다(y와 Y는 서로 다른 두 변수임).
  • 변수 이름은 문자 또는 밑줄로 시작해야 합니다.

논평: JavaScript는 대소문자를 구분하므로 변수 이름도 대소문자를 구분합니다.

예시

변수 값은 스크립트 실행 중에 변경될 수 있습니다. 이름으로 변수를 참조하여 값을 표시하거나 변경할 수 있습니다.

JavaScript 변수 선언(생성)

JavaScript에서 변수를 생성하는 것은 더 일반적으로 "선언" 변수라고 합니다.

키워드로 JavaScript 변수를 선언합니다. var:

위의 제안을 실행한 후 변수 엑스값을 포함합니다 5 , 그리고 자동차 이름값을 포함합니다 메르세데스.

논평:할당할 때 텍스트 값변수는 따옴표로 묶습니다.

논평:변수를 다시 선언해도 값이 손실되지 않습니다.

자바스크립트 지역 변수

내부에 선언된 변수 자바스크립트 함수된다 현지의이 기능 내에서만 사용할 수 있습니다. (변수에는 로컬 범위가 있습니다).

지역 변수는 선언된 함수에서 지역 변수를 인식하기 때문에 다른 함수에서 같은 이름의 지역 변수를 선언할 수 있습니다.

함수가 종료되면 지역 변수가 소멸됩니다.

나중에 JavaScript 단원에서 함수에 대해 자세히 알아볼 것입니다.

자바스크립트 전역 변수

함수 외부에서 선언된 변수는 글로벌, 페이지의 모든 스크립트 및 기능에서 액세스할 수 있습니다.

페이지를 닫으면 전역 변수가 소멸됩니다.

"var"를 사용하지 않고 변수를 선언하면 변수는 항상 글로벌.

선언되지 않은 JavaScript 변수에 값 할당

아직 선언되지 않은 변수에 값을 할당하면 자동으로 전역 변수로 선언됩니다.

다음 제안 사항:

다음 JavaScript 단원에서 연산자에 대해 자세히 알아볼 것입니다.

JavaScript의 변수와 상수. 변수를 선언하고 변수에 값을 할당합니다. 전역 및 지역 변수. 상수 사용.

JavaScript에서 변수 선언하기

JavaScript에서 변수 이름은 문자, 숫자, $ 기호, _ 기호로 구성할 수 있으며 변수 이름은 숫자로 시작할 수 없습니다. JavaScript는 대소문자를 구분하며 A1과 A1은 서로 다른 변수입니다. 키릴 문자는 가능하지만 권장되지 않습니다.
JavaScript의 변수는 var 키워드로 선언됩니다.

바르 페레멘나야_1 바르 페레멘나야_2

선언 없이 JavaScript에서 변수를 사용하는 것은 권장되지 않습니다. 이것은 가능하지만 오류가 발생할 수 있습니다.

변수에 값 할당

JavaScript에서 선언된 변수에 값 할당:

Peremennaya_1 = 25 Peremennaya_2 = "할당된 텍스트는 곧은 따옴표로 묶입니다."

선언과 동시에 변수에 값을 할당할 수 있습니다.

Var Peremennaya_1 = 25 var Peremennaya_2 = "할당된 텍스트를 곧은 따옴표로 묶습니다."

JavaScript의 변수 값은 프로그램 실행 중에 변경될 수 있습니다. 변수에 텍스트를 쓸 때는 곧은 따옴표로 묶어야 합니다.

변수 로컬 및 글로벌

함수 내에서 변수가 선언되면 현지의해당 기능 내에서만 사용할 수 있습니다(가시성). 함수가 종료되면 JavaScript의 로컬 변수가 소멸되므로 다른 함수에서 동일한 이름의 변수를 사용할 수 있습니다.

변수가 함수 외부에서 선언된 경우 글로벌페이지 내의 모든 기능에서 사용할 수 있습니다(가시성). 전역 변수는 페이지가 닫힐 때 JavaScript에서 소멸됩니다.

JavaScript의 상수

상수반복되는 값이나 표현식을 사용해야 할 때 코드 작업을 더 쉽게 할 수 있도록 설계되었습니다. 상수의 값은 한 번 설정하면 충분하며 프로그램 코드에 삽입하여 원하는 만큼 사용할 수 있습니다. JavaScript에는 상수 선언을 위한 키워드가 없으며 상수 대신 일반 변수가 사용됩니다. 상수를 변수와 구별하기 위해 필요한 경우 밑줄을 사용하여 대문자로 표시하는 것이 일반적입니다.

Var DRUG_CHELOVEKA = "개"

주어진 상수의 예는 "개"라는 단어가 이미 기억하고 필요한 곳에 삽입하기 쉽기 때문에 완전하지 않습니다. JavaScript에서 상수를 사용하여 기억하기 어려운 코드, 문자 집합, 긴 텍스트, 웹 주소, 주소와 같은 더 복잡한 값을 작성하고 붙여넣을 수 있습니다. 이메일, 전화 번호, 다른 계수.

JavaScript에서 상수는 변수처럼 다시 작성할 수 있지만 그렇게 하면 상수의 의미를 잃게 됩니다.