Javascript

3. ์–ธ์–ด์˜ ๊ธฐ์ดˆ

  • , = ์—ฐ์‚ฐ์ž

    • ==, != ์—ฐ์‚ฐ์ž๋Š” ๋น„๊ตํ•˜๊ธฐ ์ „์— ํ˜•๋ณ€ํ™˜์„ ์ง„ํ–‰ํ•œ๋‹ค.
    • false โ‡’ 0 true โ‡’ 1 ๋ณ€ํ™˜ํ•œ๋‹ค.
    • โ€5โ€์™€ 5 ๋น„๊ตํ•œ๋‹ค๋ฉด ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ํ˜•๋ณ€ํ™˜์„ ์‹œ๋„.
    • ํ•˜๋‚˜๊ฐ€ ๊ฐ์ฒด์ด๊ณ  ํ•˜๋‚˜๋‹ค ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ฉด valueOf() ํ˜ธ์ถœํ•œ๋‹ค.
    • null๊ณผ undefined ๋™์ผํ•˜๋‹ค.
    • NaN์ด๋ผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ ํ•ญ์ƒ false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

{% highlight javascript %} null undefined // true "NaN" NaN // false NaN NaN // false true 1 // true true 2 // false "5" 5 //true {% endhighlight %}

  • ====์€ ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๊ณ  ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ๋น„๊ตํ•œ๋‹ค.

{% highlight javascript %} var result1 = {โ€œ55โ€ == 55}; //true var result2 = {โ€œ55โ€ === 55}; //false {% endhighlight %}

  • ==,!=์€ ํƒ€์ž… ๋ณ€ํ™˜ ๋•Œ๋ฌธ์— ์ž์ฃผ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๋Œ€์‹  =,!๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•˜์ž. ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค.
  • Switch ๋ฌธ

    • ===๋กœ ๊ฐ’์„ ๋น„๊ตํ•˜๋ฏ€๋กœ ํƒ€์ž… ๋ณ€ํ™˜์€ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ex) โ€œ10โ€๊ณผ 10์€ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค.
  • Overloading ์—†์Œ

4. ๋ณ€์ˆ˜์™€ ์Šค์ฝ”ํ”„, ๋ฉ”๋ชจ๋ฆฌ

  • ECMAScript์˜ ๋ณ€์ˆ˜๋Š” ์›์‹œ ๊ฐ’๊ณผ ์ฐธ์กฐ ๊ฐ’ ๋‘๊ฐ€์ง€ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ์›์‹œ ๊ฐ’ : undefined, Null, Boolean, ์ˆซ์ž, ๋ฌธ์ž์—ด
    • ์ฐธ์กฐ ๊ฐ’ : Reference ๊ณต์œ 

    {% highlight javascript %} // ์ฐธ์กฐ ๊ฐ’ 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 {% endhighlight %}

  • ๋งค๊ฐœ๋ณ€์ˆ˜ ์ „๋‹ฌ์€ ๊ฐ’์ด ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ๊ณผ ๋˜‘๊ฐ™๋‹ค.

{% highlight javascript %} function addTen(num){ // num โ‡’ local Variable num += 10; return num; } var count = 20; var result = addTen(count); alert(count); // 20 alert(result); // 30 {% endhighlight %}

  • obj๋Š” ํž™์— ์กด์žฌํ•˜๋Š” ์ „์—ญ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ

{% highlight javascript %} function setName(obj){ obj.name = โ€œNESOYโ€ } var person = new Object(); setName(person); alert(person.name); // NESOY {% endhighlight %}

  • ํ•จ์ˆ˜์— ๊ฐ’์„ ์ „๋‹ฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๋ฐ”๋€Œ์—ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์›๋ž˜ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€.

{% highlight javascript %} function setName(obj){ obj.name = โ€œNESOYโ€ obj = new Object(); obj.name = โ€œColaโ€; } var person = new Object(); setName(person); alert(person.name); // NESOY {% endhighlight %}

  • Execution Context(EC)

    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด๊ฐ€ Execution Context๋‹ค.
    • ๋ณ€์ˆ˜
      • ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์—ญ๋ณ€์ˆ˜
      • this๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ Property
    • ๋งค๊ฐœ๋ณ€์ˆ˜
    • ํ•จ์ˆ˜ ์„ ์–ธ
    • Scope
    • this

    {% highlight javascript %} var x = โ€˜xxxโ€™;

    function foo () { var y = โ€˜yyyโ€™;

    function bar () { var z = โ€˜zzzโ€™; console.log(x + y + z); //xxxyyyzzz } bar(); } foo(); {% endhighlight %}

  • Global Execution Context ์ƒ์„ฑ
  • ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ ๋ ๋•Œ๋งˆ๋‹ค Stack์˜ ๋ชจ์–‘์œผ๋กœ ์Œ“์ธ๋‹ค.
  • ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜์˜ EC ์—†์–ด์ง€๊ณ  ์ด์ „ Context๋กœ ๋Œ์•„์˜จ๋‹ค.
  • Scope Chain(SC)
    • List ํ˜•ํƒœ๋ฅผ ๋„๊ณ  ์žˆ๋‹ค.
    • SC์˜ ๋ชฉ์ ์€ Execution Context๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜์— ์ˆœ์„œ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
    • Scope Chain์˜ ์•ž์ชฝ์€ ํ•ญ์ƒ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ปจํ…์ŠคํŠธ์˜ ๋ณ€์ˆ˜ ๊ฐ์ฒด์ด๋‹ค.
  • Javascript์—๋Š” ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๊ฐ€ ์—†๋‹ค.

    • var๋ฅผ ์‚ฌ์šฉํ•ด ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์ž๋™์œผ๋กœ ๊ฐ€๊นŒ์šด ์ปจํ…์ŠคํŠธ์— ์ถ”๊ฐ€๋œ๋‹ค.
    • ์„ ์–ธํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ ์ „์—ญ ์ปจํ…์ŠคํŠธ์— ์ถ”๊ฐ€๋œ๋‹ค.

    {% highlight javascript %} // 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 {% endhighlight %}

์ฐธ์กฐ

http://poiemaweb.com/

http://www.nextree.co.kr/p7363/