JavaScript Scope
A Global variable can be accessed from any script or function.
\\
**전역 변수(Global variables)**는 %%JavaScript%% 프로그램의 어느 곳에서나 액세스 할 수 있습니다.\\
=====Function Scope=====
함수 내에서 **로컬로(Locally)** 선언된 변수는 **함수 범위(Function Scope)**를 가집니다.\\
JavaScript Scope
Outside myFunction() carName is undefined.
// string Volvo
// undefined
\\
**지역 변수(Local variables)**는 선언된 함수 내에서만 액세스 할 수 있습니다.\\
=====JavaScript Block Scope=====
''%%var%%'' 키워드로 선언된 변수는 **블록 범위(Block Scope)**를 가질 수 없습니다.\\
\\
블록 {} 내부에서 선언된 변수는 블록 외부에서 액세스 할 수 있습니다.\\
{
var x = 2;
}
// x CAN be used here
\\
ES2015 이전에는 %%JavaScript%%에 블록 범위가 없었습니다.\\
\\
''%%let%%'' 키워드로 선언된 변수는 블록 범위를 가질 수 있습니다.\\
\\
블록 {} 내부에서 선언된 변수는 블록 외부에서 액세스 할 수 없습니다.\\
{
let x = 2;
}
// x can Not be used here.
=====Redeclaring Variables=====
''%%var%%'' 키워드를 사용하여 변수를 다시 선언하면 문제가 발생할 수 있습니다.\\
\\
블록 내부의 변수를 다시 선언하면 블록 외부의 변수도 다시 선언됩니다:\\
Declaring a Variable Using var
\\
''%%let%%'' 키워드를 사용하여 변수를 다시 선언하면, 이 문제를 해결할 수 있습니다.\\
\\
블록 내부의 변수를 다시 선언해도 블록 외부의 변수는 다시 선언되지 않습니다.\\
Declaring a Variable Using let
\\
''%%let%%'' 키워드는 Internet Explorer 11 이하에서 완전히 지원되지 않습니다.\\
=====Loop Scope=====
loop에서 ''%%var%%''를 사용하는 것.
JavaScript var
\\
loop에서 ''%%let%%''를 사용하는 것.
JavaScript let
\\
첫 번째 예제에서는, ''%%var%%''를 사용하여 루프에서 선언된 변수가 루프 외부의 변수를 다시 선언합니다.\\
\\
두 번째 예제에서는, ''%%let%%''을 사용하면 루프에서 선언된 변수가 루프 외부에서 변수를 다시 선언하지 않습니다.\\
\\
''%%let%%''이 루프에서 i 변수를 선언하는 데 사용되면, i 변수는 루프 내부에서만 볼 수 있습니다.\\
=====Function Scope=====
''%%var%%'' 및 ''%%let%%''으로 선언된 변수들은 함수 내에서 선언될 때 매우 유사합니다.\\
\\
둘 다 **함수 범위(Function Scope)**를 가집니다.\\
function myFunction() {
var carName = "Volvo"; // Function Scope
function myFunction() {
let carName = "Volvo"; // Function Scope
=====Global Scope=====
''%%var%%'' 및 ''%%let%%''으로 선언된 변수는 블록 외부에서 선언될 때 매우 유사합니다.\\
\\
둘 다 **전역 범위(Global Scope)**를 갖습니다.\\
var x = 2; // Global scope
let x = 2; // Global scope
=====Global Variables in HTML=====
%%JavaScript%%에서 전역 범위는 %%JavaScript%% 환경입니다.\\
\\
%%HTML%%에서, 전역 범위는 window 오브젝트입니다.\\
\\
''%%var%%'' 키워드로 정의된 전역 변수는 window 오브젝트에 속합니다.\\
\\
JavaScript Global Variables
In HTML, global variables defined with var will become window variables.
\\
''%%let%%'' 키워드로 정의된 전역 변수는 window 오브젝트에 속하지 않습니다.\\
JavaScript Global Variables
In HTML, global variables defined with let will not become window variables.
=====Redeclaring=====
''%%var%%''로 %%JavaScript%% 변수를 다시 선언하는 것은 프로그램의 모든 위치에서 허용됩니다.\\
\\
동일한 범위 또는 동일한 블록에서 let을 사용하여 var 변수를 다시 선언하는 것은 허용되지 않습니다.\\
var x = 2; // Allowed
let x = 3; // Not allowed
{
var x = 4; // Allowed
let x = 5; // Not Allowed
}
\\
동일한 범위 또는 동일한 블록에서 let을 사용하여 let 변수를 다시 선언하는 것은 허용되지 않습니다.\\
let x = 2; // Allowed
let x = 3; // Not allowed
{
let x = 4; // Allowed
let x = 5; // Not allowed
}
\\
let을 사용하여 다른 범위 또는 다른 블록에서 변수를 다시 선언하는 것은 허용됩니다.\\
JavaScript let
Reclaring a variable with let in another scope or in another block is allowed.
=====Hoisting=====
''%%var%%''로 정의된 변수는 맨 위로 올라 와서 언제든지 초기화 될 수 있습니다.\\
\\
hositing: 끌어 올리기, 들어올려 나르기\\
의미: 변수를 선언하기 전에 사용할 수 있습니다:\\
JavaScript Hoisting
With var, you can use a variable before it is declared:
\\
''%%let%%''으로 정의된 변수는 블록의 맨 위에 올려지지만, 초기화되지는 않습니다.\\
\\
의미 : 코드 블록은 변수를 인식하지만, 선언될 때까지 사용할 수 없습니다.\\
\\
선언하기 전에 ''%%let%%'' 변수를 사용하면 ''%%ReferenceError%%''가 발생합니다.\\
\\
변수는 선언될 때까지 블록이 시작하는 곳에 있는 "TDZ(Temporal Dead Zone)"에 있습니다.\\
====예제====
다음은 ''%%ReferenceError%%''을 발생시킵니다.\\
JavaScript Hoisting
With let, you can use a variable before it is declared:
{{tag>오션, Javascript Let}}