Javascript
3. ์ธ์ด์ ๊ธฐ์ด
, = ์ฐ์ฐ์
==, != ์ฐ์ฐ์๋ ๋น๊ตํ๊ธฐ ์ ์ ํ๋ณํ์ ์งํํ๋ค.
false โ 0 true โ 1 ๋ณํํ๋ค.
โ5โ์ 5 ๋น๊ตํ๋ค๋ฉด ๋ฌธ์์ด์ ์ซ์๋ก ํ๋ณํ์ ์๋.
ํ๋๊ฐ ๊ฐ์ฒด์ด๊ณ ํ๋๋ค ๊ฐ์ฒด๊ฐ ์๋๋ฉด valueOf() ํธ์ถํ๋ค.
null๊ณผ undefined ๋์ผํ๋ค.
NaN์ด๋ผ๋ฉด false๋ฅผ ๋ฐํ ํญ์ false๋ฅผ ๋ฐํํ๋ค.
null == undefined // true
"NaN" == NaN // false
NaN == NaN // false
true == 1 // true
true == 2 // false
"5" == 5 //true
====์ ํผ์ฐ์ฐ์์ ํ์
์ ๋ณํํ์ง ์๊ณ ์๋ ๊ทธ๋๋ก ๋น๊ตํ๋ค.
var result1 = { "55" == 55}; //true
var result2 = { "55" === 55}; //false
==,!=์ ํ์
๋ณํ ๋๋ฌธ์ ์์ฃผ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฏ๋ก ๋์ =,! ๋ฅผ ์์ฃผ ์ฌ์ฉํ์. ๋ฐ์ดํฐ ํ์
์ ๊ด๋ฆฌํ๊ธฐ ์ฌ์์ง๋ค.
Switch ๋ฌธ
===๋ก ๊ฐ์ ๋น๊ตํ๋ฏ๋ก ํ์
๋ณํ์ ์ผ์ด๋์ง ์๋๋ค. ex) โ10โ๊ณผ 10์ ์๋ก ๋ค๋ฅด๋ค.
Overloading ์์
4. ๋ณ์์ ์ค์ฝํ, ๋ฉ๋ชจ๋ฆฌ
ECMAScript์ ๋ณ์๋ ์์ ๊ฐ๊ณผ ์ฐธ์กฐ ๊ฐ ๋๊ฐ์ง ํ์
์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค.
์์ ๊ฐ : undefined, Null, Boolean, ์ซ์, ๋ฌธ์์ด
์ฐธ์กฐ ๊ฐ : Reference ๊ณต์
// ์ฐธ์กฐ ๊ฐ
var person = new Object ();
person.name = "Young Jae" ;
alert (person.name); //Young Jae
// ์์ ๊ฐ
var name = "Young Jae" ;
name.age = 27 ;
alert (name.age); // undefined
// ๊ฐ ๋ณต์ฌ
var obj1 = new Object ();
var obj2 = obj1;
obj1.name = "Young Jae" ;
alert (obj2.name); // Young Jae
๋งค๊ฐ๋ณ์ ์ ๋ฌ์ ๊ฐ์ด ๋ณต์ฌํ๋ ๊ฒ๊ณผ ๋๊ฐ๋ค.
function addTen ( num ){ // num => local Variable
num += 10 ;
return num;
}
var count = 20 ;
var result = addTen (count);
alert (count); // 20
alert (result); // 30
obj๋ ํ์ ์กด์ฌํ๋ ์ ์ญ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ
function setName ( obj ){
obj.name = "NESOY"
}
var person = new Object ();
setName (person);
alert (person.name); // NESOY
ํจ์์ ๊ฐ์ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ ํจ์ ๋ด๋ถ์์ ๋งค๊ฐ๋ณ์์ ๊ฐ์ด ๋ฐ๋์์์๋ ๋ถ๊ตฌํ๊ณ ์๋ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ๊ทธ๋๋ก ์ ์ง.
function setName ( obj ){
obj.name = "NESOY"
obj = new Object ();
obj.name = "Cola" ;
}
var person = new Object ();
setName (person);
alert (person.name); // NESOY
Execution Context(EC)
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํด ํ์ํ ์ฌ๋ฌ๊ฐ์ง ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ฐ์ฒด๊ฐ Execution Context๋ค.
๋ณ์
ํจ์ ๋ด๋ถ์์๋ง ์ ๊ทผํ ์ ์๋ ์ง์ญ๋ณ์
this๋ก ์ ๊ทผ ๊ฐ๋ฅํ Property
๋งค๊ฐ๋ณ์
ํจ์ ์ ์ธ
Scope
this
var x = 'xxx' ;
function foo () {
var y = 'yyy' ;
function bar () {
var z = 'zzz' ;
console. log (x + y + z); //xxxyyyzzz
}
bar ();
}
foo ();
Global Execution Context ์์ฑ
ํจ์๊ฐ ํธ์ถ ๋ ๋๋ง๋ค Stack์ ๋ชจ์์ผ๋ก ์์ธ๋ค.
ํจ์๊ฐ ์ข
๋ฃ๋๋ฉด ํด๋น ํจ์์ EC ์์ด์ง๊ณ ์ด์ Context๋ก ๋์์จ๋ค.
Scope Chain(SC)
List ํํ๋ฅผ ๋๊ณ ์๋ค.
SC์ ๋ชฉ์ ์ Execution Context๊ฐ ์ ๊ทผํ ์ ์๋ ๋ชจ๋ ๋ณ์์ ํจ์์ ์์๋ฅผ ์ ์ํ๋ ๊ฒ์ด๋ค.
Scope Chain์ ์์ชฝ์ ํญ์ ์ฝ๋๊ฐ ์คํ๋๋ ์ปจํ
์คํธ์ ๋ณ์ ๊ฐ์ฒด์ด๋ค.
Javascript์๋ ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ๊ฐ ์๋ค.
var๋ฅผ ์ฌ์ฉํด ์ ์ธํ ๋ณ์๋ ์๋์ผ๋ก ๊ฐ๊น์ด ์ปจํ
์คํธ์ ์ถ๊ฐ๋๋ค.
์ ์ธํ์ง ์์ผ๋ฉด ์๋์ผ๋ก ์ ์ญ ์ปจํ
์คํธ์ ์ถ๊ฐ๋๋ค.
// var๋ก ์ ์ธ
function add ( num1 , num2 ){
var sum = num1 + num2;
return sum;
}
var result = add ( 10 , 20 ); //30
alert (result); // Error
// ๊ทธ๋ฅ ์ ์ธ
function add ( num1 , num2 ){
sum = num1 + num2;
return sum;
}
var result = add ( 10 , 20 ); //30
alert (result); // 30
์ฐธ์กฐ