[Js] ν¨μμ§ν₯ | javascript ν¨μ | μ ν¨λ²μ | μ§μλ³μ μ μλ³μ
- -
ν΄λΉ ν¬μ€ν μ "μνμ½λ©"μ μ΄κ³ μ λμ κ°μλ₯Ό κΈ°λ°μΌλ‘ μ¬λ¦° κ²μκΈ μ λλ€.
μμ μ μΈ μ©λκ° μλ, κ°μΈ κ³΅λΆ μ 리 λͺ©μ μΌλ‘ μ¬λ¦¬λ κΈμμ 미리 μ립λλ€.
ν¨μμ§ν₯
μλ°μ€ν¬λ¦½νΈμ ν¨μλ λ§€μ° κ°λ ₯νλ€. ν¨μμ λν μ΄ν΄ μμ΄λ μλ°μ€ν¬λ¦½νΈλ₯Ό μ λ€λ£¨κΈ° μ΄λ ΅λ€.
λν μλ°μ€ν¬λ¦½νΈμμ ν¨μλ κ°μ²΄λ₯Ό μ΄ν΄νλ λ° κ°μ₯ μ€μν κΈ°μ΄λ₯Ό μ΄λ£¬λ€.
μ΄λ² κ°μ’μμλ ν¨μν μΈμ΄λ‘μ μλ°μ€ν¬λ¦½νΈμ λ©΄λͺ¨λ₯Ό λ€λ€λ³΄λλ‘ νκ² λ€.
μ ν¨λ²μ
μ ν¨λ²μ(Scope)λ λ³μμ μλͺ μ μλ―Ένλ€. μλμ μμ λ₯Ό 보μ.
<script>
var vscope = 'global';
function fscope(){
alert(vscope);
}
fscope();
</script>
κ²°κ³Όλ globalμ΄λ€.
ν¨μ λ°μμ λ³μλ₯Ό μ μΈνλ©΄ κ·Έ λ³μλ μ μλ³μκ° λλ€.
μ μλ³μλ μν리μΌμ΄μ μ μμμ μ κ·Όμ΄ κ°λ₯ν λ³μλ€. λ€μ λ§ν΄μ μ΄λ€ ν¨μ μμμλ κ·Έ λ³μμ μ κ·Ό ν μ μλ€.
κ·Έλ κΈ° λλ¬Έμ ν¨μ fscope λ΄μμ vscopeλ₯Ό νΈμΆ νμ λ ν¨μ λ°μμ μ μΈλ vscopeμ κ° globalμ΄ λ°νλ κ²μ΄λ€.
μλ μμ λ₯Ό 보μ. κ²°κ³Όλ 'ν¨μμ local'κ³Ό 'ν¨μλ° global'μ΄ μΆλ ₯λλ€.
<script>
var vscope = 'global';
function fscope(){
var vscope = 'local';
alert('ν¨μμ '+vscope);
}
fscope();
alert('ν¨μλ° '+vscope);
</scrip>
μ¦ ν¨μ μμμ λ³μ vscopeμ μ‘°ν(5ν) νμ λ ν¨μ λ΄μμ μ μΈν μ§μλ³μ vscope(4ν)μ κ°μΈ localμ΄ μ¬μ©λμλ€. νμ§λ§ ν¨μ λ°μμ vscopeλ₯Ό νΈμΆ(8ν) νμ λλ μ μλ³μ vscope(2ν)μ κ°μΈ globalμ΄ μ¬μ©λ κ²μ΄λ€.
μ¦ μ§μλ³μμ μ ν¨λ²μλ ν¨μ μμ΄κ³ , μ μλ³μμ μ ν¨λ²μλ μν리μΌμ΄μ μ μμΈλ°, κ°μ μ΄λ¦μ μ§μλ³μμ μ μλ³μκ° λμμ μ μλμ΄ μλ€λ©΄ μ§μλ³μκ° μ°μ νλ€λ κ²μ μ μ μλ€.
μλ μμ λ₯Ό 보μ. κ²°κ³Όλ λͺ¨λ localμ΄λ€.
<script>
var vscope = 'global';
function fscope(){
vscope = 'local';
alert('ν¨μμ'+vscope);
}
fscope();
alert('ν¨μλ°'+vscope);
</script>
ν¨μλ°μμλ vscopeμ κ°μ΄ localμΈ μ΄μ λ 무μμΌκΉ?
κ·Έκ²μ ν¨μ fscopeμ μ§μλ³μλ₯Ό μ μΈν λ varλ₯Ό μ¬μ©νμ§ μμκΈ° λλ¬Έμ΄λ€.
varλ₯Ό μ¬μ©νμ§ μμ μ§μλ³μλ μ μλ³μκ° λλ€.
λ°λΌμ 3νμ μ μλ³μμ κ°μ localλ‘ λ³κ²½νκ² λ κ²μ΄λ€. varμ μ°λ κ²κ³Ό μ°μ§ μλ κ²μ μ°¨μ΄λ₯Ό μ΄ν΄ν΄μΌ νλ€.
μ μλ³μλ μ¬μ©νμ§ μλ κ²μ΄ μ’λ€. μ¬λ¬κ°μ§ μ΄μ λ‘ κ·Έ κ°μ΄ λ³κ²½λ μ μκΈ° λλ¬Έμ΄λ€.
ν¨μ μμμ μ μλ³μλ₯Ό μ¬μ©νκ³ μλλ°, λκ΅°κ°μ μν΄μ μ μλ³μμ κ°μ΄ λ¬λΌμ‘λ€λ©΄ μ΄λ»κ² λ κΉ?
ν¨μμ λμλ λ¬λΌμ§κ² λλ€.
μ΄κ²μ λ²κ·Έμ μμΈμ΄ λλ€. λν ν¨μλ₯Ό λ€λ₯Έ μν리μΌμ΄μ μ μ΄μνλλ°λ μ΄λ €μμ μ΄λνλ€.
ν¨μμ ν΅μ¬μ λ‘μ§μ μ¬νμ©μ΄λΌλ μ μ μκΈ°νμ.
λ³μλ₯Ό μ μΈν λλ κΌ varμ λΆμ΄λ κ²μ μ΅κ΄νν΄μΌ νλ€. μ μλ³μλ₯Ό μ¬μ©ν΄μΌ νλ κ²½μ°λΌλ©΄ κ·Έκ²μ μ¬μ©νλ μ΄μ λ₯Ό λͺ νν μκ³ μμ λ μ¬μ©νλλ‘ νμ.
βΌ μ£Όμ
β» μ΄λ―Έ μ§μλ³μκ° λ§λ€μ΄μ Έμλλ°, varμ μ°μ§ μκ³ μ μλ³μλ‘ λ§λ λ€λ©΄ μ°μ μμλ μ§μλ³μκ° λλ€.
β» varλ₯Ό μ¨μ μ μλ³μλ₯Ό λ§λ€κ³ , μ΄ν varλ₯Ό μ°μ§μκ³ κ·Έ λ³μμ κ°μ λ°κΎΌλ€λ©΄, κ·Έ κ°μ΄ μ μλ³μ κ°μΌλ‘ λ³κ²½λλ€.
μ ν¨λ²μμ ν¨μ©
μλ λκ°μ μμ λ λ³μ iλ₯Ό μ§μλ³μλ‘ μ¬μ©νμ λμ μ μλ³μλ‘ μ¬μ©νμ λμ μ°¨μ΄μ μ 보μ¬μ€λ€. μ μλ³μλ κ°κΈ° λ€λ₯Έ λ‘μ§μμ μ¬μ©νλ κ°μ μ΄λ¦μ λ³μκ°μ λ³κ²½μμΌμ μλνμ§ μμ λ¬Έμ λ₯Ό λ°μμν¨λ€.
μ§μλ³μμ μ¬μ©
<!DOCTYPE html>
<html>
<head>
<title>haha</title>
</head>
<body>
<script type="text/javascript">
function a(){
var i =0;
}
for(var i = 0; i <5; i++){
a();
document.write(i);
}
</script>
</body>
</html>
μ€νκ²°κ³Ό
λ§μΌ μ μ½λμμ, function a μ λ³μ iλ₯Ό μ μΈν λ, var ν€μλλ₯Ό μ μ§ μλλ€λ©΄ μ΄λ»κ² λ κΉ?
λ°λ‘ 무νλ°λ³΅μΌλ‘ λΈλΌμ°μ κ° λ€μ΄λλ€.
κ·Έ μ΄μ λ νμ¬ forλ¬Έμμ μ μΈλ λ³μ iκ° μ μλ³μμ΄κ³ , function aμ λ³μ iλ μ§μλ³μ μΈλ°,
varν€μλλ₯Ό μ μ§ μμμ£Όλ©΄ aν¨μμ λ³μ iκ° μ μλ³μκ° λμ΄,
μ μλ³μ iμ κ°μ΄ νμ 0μ΄ λμ΄ forλ¬Έ 쑰건μ λ§μ‘±νλ―λ‘ λμμμ΄ λκ² λλ κ²μ΄λ€.
μ μλ³μμ μ¬μ©
λ³Έ μμ λ μμ μ€λͺ λ κ²½μ°μ΄λ©° 무νλ°λ³΅μ λ°μμν¨λ€.
<!DOCTYPE html>
<html>
<head>
<title>haha</title>
</head>
<body>
<script type="text/javascript">
function a(){
i =0; //varκ° μλ΅λ¨. μ¦ μ μλ³μλ₯Ό μλ―Έν¨.
}
for(var i = 0; i <5; i++){
a();
document.write(i);
}
</script>
</body>
</html>
λΆκ°νΌνκ² μ μλ³μλ₯Ό μ¬μ©ν΄μΌ νλ κ²½μ°λ νλμ κ°μ²΄λ₯Ό μ μλ³μλ‘ λ§λ€κ³ κ°μ²΄μ μμ±μΌλ‘ λ³μλ₯Ό κ΄λ¦¬νλ λ°©λ²μ μ¬μ©νλ€.
<script>
MYAPP = {}//κ°μ²΄μ
MYAPP.calculator = {//κ°μ²΄μμ λλ€λ₯Έ κ°μ²΄
'left' : null,//nullμ κ°μ΄ μμμ λͺ
μν¨
'right' : null
}
MYAPP.coordinate = {
'left' : null,
'right' : null
}
MYAPP.calculator.left = 10;
MYAPP.calculator.right = 20;
function sum(){
return MYAPP.calculator.left + MYAPP.calculator.right;
}
document.write(sum());
</script>
μ μλ³μλ₯Ό μ¬μ©νκ³ μΆμ§ μλ€λ©΄ μλμ κ°μ΄ μ΅λͺ ν¨μλ₯Ό νΈμΆν¨μΌλ‘μ μ΄λ¬ν λͺ©μ μ λ¬μ±ν μ μλ€.
<script>
(function(){
var MYAPP = {}
MYAPP.calculator = {
'left' : null,
'right' : null
}
MYAPP.coordinate = {
'left' : null,
'right' : null
}
MYAPP.calculator.left = 10;
MYAPP.calculator.right = 20;
function sum(){
return MYAPP.calculator.left + MYAPP.calculator.right;
}
document.write(sum());
}())
</script>
μμ κ°μ λ°©λ²μ μλ°μ€ν¬λ¦½νΈμμ λ‘μ§μ λͺ¨λννλ μΌλ°μ μΈ λ°©λ²μ΄λ€.
μ΄λ κ² λλ©΄ MYAPPμ΄ λμ΄μ μ μλ³μκ° μλ, ν¨μμ μ§μλ³μκ° λλ κ²μ΄λ€.
λ§μ½ ν¨μμ μ΄λ¦μ μ£Όκ³ μΆλ€λ©΄ μ£Όκ³ , νΈμΆνμ¬λ κ΄κ³κ° μμ§λ§ κ·Έλ κ² λλ©΄ κ·Έ λν μ μ λ³μκ° λλ κ²μ΄κΈ° λλ¬Έμ
μ μ λ³μλ₯Ό νλλ μ°μ§ μκ³ μΆλ€λ©΄ μμ κ°μ΄ μ΅λͺ ν¨μ λ°©λ²μ μ¬μ©νλ©΄ λλ€.
μ ν¨λ²μμ λμ (ν¨μ)
μλ°μ€ν¬λ¦½νΈλ ν¨μμ λν μ ν¨λ²μλ§μ μ 곡νλ€.
λ§μ μΈμ΄λ€μ΄ λΈλ‘(λμ²΄λ‘ {,})μ λν μ ν¨λ²μλ₯Ό μ 곡νλ κ²κ³Ό λ€λ₯Έ μ μ΄λ€. μλ μμ μ κ²°κ³Όλ coding everybodyμ΄λ€.
<script>
for(var i = 0; i < 1; i++){
var name = 'coding everybody';
}
alert(name);
</script>
μλ°μμλ μλμ μ½λλ νμ©λμ§ μλλ€.(μλ¬κ° λ¨)
nameμ μ§μλ³μλ‘ for λ¬Έ μμμ μ μΈ λμλλ° μ΄λ₯Ό forλ¬Έ λ°μμ νΈμΆνκ³ μκΈ° λλ¬Έμ΄λ€.
for(int i = 0; i < 10; i++){
String name = "egoing"; //var name ="egoing"κ³Ό κ°μ λλ
}
System.out.println(name); //console.log(name)μ λλ
μλ°μ€ν¬λ¦½νΈμ μ§μλ³μλ ν¨μμμλ§ μ ν¨νλ€.
μ¦ ν¨μ λ°μμ μ¬μ©λλ μ§μλ³μλ κ·Έ μλ―Έκ° μ§μλ³μλ₯Ό κ°λ₯΄ν€μ§ μλλ€.
κ·Έλ κΈ° λλ¬Έμ forλ¬Έκ³Ό κ°μ κ³³μμ μ¬μ© ν, alert(name)μΌλ‘ μΆλ ₯ νμ¬λ μλ¬κ° λμ§ μλλ€.
μ μ μ ν¨λ²μ
μλ°μ€ν¬λ¦½νΈλ ν¨μκ° μ μΈλ μμ μμμ μ ν¨λ²μλ₯Ό κ°λλ€.
μ΄λ¬ν μ ν¨λ²μμ λ°©μμ μ μ μ ν¨λ²μ(static scoping), νΉμ λ μ컬(lexical scoping)μ΄λΌκ³ νλ€.
<script>
var i = 5;
function a(){
var i = 10;
b();
}
function b(){
document.write(i);
}
a();
</script>
μ΄ μ½λμμ function b ()μμ μΆλ ₯λλ iλ
κ³Όμ°, μ μλ³μ i = 5μ κ°μΌκΉ, μλλ©΄ function a()μμ μ μΈλ μ§μλ³μ i = 10 μ κ°μΌκΉ?
μ λ΅μ μ μλ³μ 5μ κ°μ΄λ€.
μ¦, νΈμΆλ μμ μ 보λ κ²μ΄ μλ (μ¬μ©λ λ) μ μλ λμ μ μλ³μκ° μ¬μ©λκ² λλ κ²μ΄λ€.
λ©μλκ° μ μ λμ΄μ§ μμ μμ μ¬μ©λλ κ², μ΄λ¬ν λ²μλ₯Ό μ μ μ ν¨λ²μλΌκ³ νλ€.
'Languages > Java Script' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Js] ν΄λ‘μ | μΈλΆν¨μ, λ΄λΆν¨μ (0) | 2021.02.04 |
---|---|
[Js] κ°μΌλ‘μμ ν¨μμ μ½λ°± | μ½λ°± | λΉλκΈ° μ²λ¦¬ (0) | 2021.02.04 |
[Js] μ κ· ννμ | μ»΄νμΌ? | μ κ·ννμ 리ν°λ΄ (0) | 2021.02.04 |
[Js] UIμ API κ·Έλ¦¬κ³ λ¬Έμ보λ λ² | APIλ? | javascript API (0) | 2021.02.04 |
λΉμ μ΄ μ’μν λ§ν μ½ν μΈ
μμ€ν κ³΅κ° κ°μ¬ν©λλ€