๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

ยท ์•ฝ 4๋ถ„

์ธ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ#

์˜ค๋Š˜์€ ์ธ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ 6์žฅ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ณต๋ถ€ํ•˜์˜€๋‹ค.

6.1 ํด๋ž˜์Šค, ์ƒ์„ฑ์ž, ๋ฉ”์†Œ๋“œ๊นŒ์ง€๋Š” ๊ทธ๋Ÿญ์ €๋Ÿญ ์ดํ•ด๊ฐ€ ๋˜์—ˆ์œผ๋‚˜, 6.2 ์ƒ์† ๋ถ€๋ถ„์—์„œ ์ •๋ง ์˜คํ›„, ์ €๋… ์‹œ๊ฐ„ ๋‚ด๋‚ด ์ฉ”์ฉ” ๋งค๋ฉด์„œ ์ฝ์—ˆ์ง€๋งŒ ๋„์ €ํžˆ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค.

๋‚ด๊ฐ€ Java๋‚˜ Python์„ ๊นŠ์ˆ™ํžˆ ์‚ฌ์šฉํ•ด๋ณธ ๊ฒƒ๋„ ์•„๋‹Œ๋ฐ, ํด๋ž˜์Šค ๊ธฐ๋ฐ˜์˜ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฌผ๋“ค์–ด ์žˆ์—ˆ๋‹ค. Java์—์„œ ์‚ฌ์šฉํ•˜๋˜ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜์˜ ์ƒ์†์ด ๋งค๋„๋Ÿฝ๊ณ ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์ง๊ด€์ ์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ณ , ๋ฐ˜๋ฉด์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ”„๋กœํ† ํƒ€์ž…์„ ์ด์šฉํ•œ์ƒ์† ๋ฐฉ์‹์€ ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ์นœ์ ˆํžˆ ์„ค๋ช…ํ•˜๋Š” ๊ทธ๋ฆผ์„ ๋ด๋„ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์› ๋‹ค. ๋ญ”๊ฐ€ ์ปค๋‹ค๋ž€ ์žฅ๋ฒฝ์„ ๋งŒ๋‚œ ๊ธฐ๋ถ„์ด์—ˆ๋‹ค. (๋‚˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•˜๋ฉด ์•ˆ๋˜๋Š” ๊ฑด๊ฐ€..) ์ž์‹ ๊ฐ์ด ๋–จ์–ด์ง€๊ณ  ์–ด๋”˜๊ฐ€ ๋ฌผ์–ด๋ณด๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์ด ์ ˆ์‹คํ–ˆ๋‹ค..

์ผ๋‹จ ์ดํ•ด๋˜์ง€ ์•Š๋Š” ์ ์„ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.


์ธ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฑ…์— ๋”ฐ๋ฅด๋ฉด ECMAScript 5์—์„œ ์ œ๊ณตํ•˜๋Š” Object.create() ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„์€ ์ด๋Ÿฌํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.

function create_object(o) {    function F() {}    F.prototype = o;    return new F();}

์ด ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ์ƒ์†์„ ๊ตฌํ˜„ํ•ด๋ณด์ž.

var Person = {    name: 'zzoon',    getName: function () {        return this.name;    },    setName: function (arg) {        this.name = arg;    },};
function create_object(o) {    function F() {}    F.prototype = o;    return new F();}
var student = create_object(person);
student.setName('me');console.log(student.getName()); // me

2020-03-09-200309-image-0


์ด ๊ทธ๋ฆผ๊นŒ์ง€๋Š” ์ดํ•ด๊ฐ€ ๋˜์—ˆ๋‹ค.


var Parent = (function () {    function Parent(name) {        this.name = name;    }
    Parent.prototype.sayHi = function () {        console.log('Hi! ' + this.name);    };
    return Parent;})();
var child = Object.create(Parent.prototype);child.name = 'child';
child.sayHi(); // Hi! child
console.log(child instanceof Parent); // true

์˜ˆ์ œ ์ถœ์ฒ˜ : ๐Ÿ”— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - Poiemaweb


์˜๋ฌธ์  : ์œ„ ์˜ˆ์ œ๋Š” ๋ถ€๋ชจ๊ฐ€ ๋˜๋Š” Person ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ๋„ฃ์€ ๋ฐ˜๋ฉด, ์ด ์˜ˆ์ œ์—์„œ๋Š” Parent.prototype ์„ Object.create ์˜ ์ธ์ˆ˜๋กœ ๋„ฃ์—ˆ๋Š”๊ฐ€?


2020-03-09-200309-image-1


์•—.. ์•„๋ž˜๋Š” ๋ถ€๋ชจ๋กœ ์‚ผ์„ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—, ์œ„๋Š” ๋ถ€๋ชจ๋กœ ์‚ผ์„ ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š”๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด์ธ ๊ฒƒ์ด์—ˆ๋‹ค..!


์ดํ•ด ์•ˆ๋˜๋Š” ์ ๋“ค

  • extend() ํ•จ์ˆ˜

  • apply() ํ•จ์ˆ˜ (๋Œ€๋žต์€ ์ดํ•ด๋จ ..;;)

  • ํด๋ž˜์Šค ๊ธฐ๋ฐ˜์˜ ์ƒ์†์ธ ๊ฒฝ์šฐ ์™œ ์ž์‹ ํด๋ž˜์Šค์˜ prototype ์ด ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐธ์กฐํ•˜๋Š”๋ฐ, ์ด ๊ตฌ์กฐ๊ฐ€ ์™œ ์ž์‹ ํด๋ž˜์Šค์˜ prototype ์— ๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋ฌธ์ œ๊ฐ€ ๋˜๋Š”๊ฐ€?


2020-03-09-200309-image-2


์ผ๋‹จ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ถ€๋ถ„์„ ๋‚ด์ผ ํ•œ๋ฒˆ ๋” ๊ณต๋ถ€ํ•ด ๋ด์•ผ๊ฒ ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒจํ„ด์ด ๋‹ค์–‘ํ•˜๋‹ค๋ณด๋‹ˆ ์–ด๋Š ํŒจํ„ด์ด ์ข‹๋‹ค๋Š” ๊ฑด์ง€ ์ดํ•ด๊ฐ€ ์•ˆ๋˜๊ฒ ๋Š” ์ƒํ™ฉ์ด ์ข…์ข… ์žˆ๋‹ค. ์•„์ง 1ํšŒ๋…๋„์•ˆํ•ด๋ดค๊ธฐ ๋•Œ๋ฌธ์—, ์•„์ง ๋‹ค ์ดํ•ดํ•˜๋ ค๋Š”๊ฒŒ ๋ฌด๋ฆฌ์ธ๊ฑฐ ๊ฐ™๊ธฐ๋„ ํ•˜๋‹ค.


ยท ์•ฝ 3๋ถ„

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ#

  • ๋ณ€์ˆ˜ ํ‚ค์›Œ๋“œ var ์ƒ๋žต ๊ฐ€๋Šฅ?

๋ฏธ๋””์–ดํ”„๋กœ์ ํŠธ#

์ž๋ฃŒ ์กฐ์‚ฌ#

  - Tmap + ๋ธ”๋ž™๋ฐ•์Šค ์—ฐ๋™
     - ์˜์ƒ ๋ฐ์ดํ„ฐ์— ์‹œ๊ฐ„ ์ •๋ณด๋Š” ์ž˜ ๋‹ด๊น€
     - `mdls [ํŒŒ์ผ๋ช…]` (๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณด๋Š” ๋ช…๋ น์–ด)
     - (๋ฒˆ์™ธ) Tmap ๋ธ”๋ž™๋ฐ•์Šค๋Š” ์˜์ƒ์— ๋‚ ์งœ ์‹œ๊ฐ„์ด ํ‘œ์‹œ ์•ˆ๋จ โ†’ ์‚ฌ๊ณ ์‹œ ๋ฒ•์  ํšจ๋ ฅ X
  - Tmap API ๊ณต๋ถ€ - ๐Ÿ”— [http://tmapapi.sktelecom.com/main.html](http://tmapapi.sktelecom.com/main.html)
  > ์›นํŽ˜์ด์ง€ ๋ณด๊ธฐ๊ฐ€ ๋ถˆํŽธํ•˜๋‹ˆ ์•„๋ž˜ ์ฝ”๋“œ๋กœ ์ˆ˜์ •
  ```html  <div id="side_wrap" class="ui-resizable" style="height: 768px; width: 0px;">  ```


  ![2020-03-09-200310-image-0](./images/2020-03-09-200310-image-0.png)
  <br />

ํ•„์š”ํ•œ ๊ธฐ์ˆ #

Tmap๊ณผ ์—ฐ๋™ํ•œ ์šด์ „ ์Šต๊ด€ ๊ฐœ์„  ํ™•์žฅ ์•ฑ#

  1. pwa๋ฅผ ๋งŒ๋“ค๊ณ  ์˜์ƒ ์ดฌ์˜๊ณผ GPS ๋กœ๊ทธ๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ง„ํ–‰ํ•˜๊ณ  Tmap์„ ์‹คํ–‰ํ•ด์„œ๊ฒฝ๋กœ๋ฅผ ์•ˆ๋‚ดํ•จ Tmap์—์„œ ์šดํ–‰ ์ข…๋ฃŒ๋ฅผ ํ•˜๋ฉด ์˜์ƒ ์ดฌ์˜, ๊ธฐ๋ก์„ ๋ฉˆ์ถค. GPS๋กœ๊ทธ์™€ ์˜์ƒ์„ ๋‹ด์•„ ์„œ๋ฒ„๋กœ ์ „์†กํ•จ.

    PWA์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์‹ฑ์ด ์•ˆ๋˜๋Š” ํ•œ๊ณ„

  2. pwa๋ฅผ ๋งŒ๋“ค๊ณ  ๋ชฉ์ ์ง€๋ฅผ ์ž…๋ ฅ ํ›„ Tmap ์‹คํ–‰ (Tmap์€ ๋ธ”๋ž™๋ฐ•์Šค ์‚ฌ์šฉ์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š” ์ƒํƒœ) Tmap ์™„๋ฃŒ ํ›„ gps + ์˜์ƒ ์ถ”์ถœ.

    Tmap ์ฃผํ–‰ ํ›„ GPS ์ถ”์ถœ์ด ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์œผ๋ฉด ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ PWA์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์‹ฑ์ด ์•ˆ๋˜์„œ GPS ๋ฐ์ดํ„ฐ ๋งŒ๋“œ๋Š”๊ฒŒ ๋ถˆ๊ฐ€๋Šฅํ•  ๋“ฏ

  3. ์•ฑ์„ ๋งŒ๋“ค๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์˜์ƒ ์ดฌ์˜, GPS ํŠธ๋ž™ํ•˜๋ฉด์„œ (๋ธ”๋ž™๋ฐ•์Šค ์—ญํ• ) Tmap์œผ๋กœ๊ฒฝ๋กœ ์•ˆ๋‚ด.

    ์‚ฌ์‹ค์ƒ ๋ธ”๋ž™๋ฐ•์Šค ์•ฑ?

    ๋‹ค๋ฅธ ์•ฑ๋“ค

์•ฑ ๋งŒ๋“ค๊ธฐ#

  • ionic

    ํ•œ๋ฒˆ ์‹œ๋„ํ•ด๋ณด๊ณ  ๊ตฌ๊ธ€๋ง ๊ฒฐ๊ณผ ๋‚ด์žฅ ์นด๋ฉ”๋ผ, ๋น„๋””์˜ค ๋ ˆ์ฝ”๋”ฉ ํ•˜๋Š” ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ๊นŒ์ง€ ํ•˜๊ธฐ์—” ์˜ˆ์ œ๋‚˜ ์ž๋ฃŒ๊ฐ€ ๋ถ€์กฑํ–ˆ์Œ.

  • React-Native

    ์ž๋ฃŒ๊ฐ€ ์กฐ๊ธˆ ๋” ๋งŽ์€ ํŽธ์ธ๋“ฏ

์–ด๋–ค ๊ฒƒ์œผ๋กœ ํ•ด์•ผํ•  ์ง€๋Š” ์กฐ๊ธˆ ๋” ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ์ •ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•œ๋‹ค.

๊ทธ์™ธ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ํ”„๋กœ์ ํŠธ๋“ค#

  • ์›นํŽ˜์ด์ง€ ๋ชจ๋“  ์†Œ์Šค ๋‹ค์šด๋กœ๋“œ ํˆด

  • ์ฝ๊ธฐ๋ชจ๋“œ ์ต์Šคํ…์…˜ (chrome)



ยท ์•ฝ 7๋ถ„

์ด ๊ธ€์€ ๊ณ ํ˜„์ค€, ์†กํ˜•์ฃผ ๋‹˜์˜ ์ธ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ์ฐธ์กฐํ•˜์—ฌ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

JavaScript ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ์—ฐ์‚ฐ์ž (๊ณ„์†)#

์ฐธ์กฐ ํƒ€์ž…(๊ฐ์ฒด ํƒ€์ž…)#

for in ๋ฌธ๊ณผ ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ ์ถœ๋ ฅ#

for in ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด, ๊ฐ์ฒด์— ํฌํ•จ๋œ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•ด ๋ฃจํ”„๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค .

// ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์„ ํ†ตํ•œ foo ๊ฐ์ฒด ์ƒ์„ฑvar foo = {    name: 'foo',    age: 30,    major: 'computer science',};
// for in ๋ฌธ์„ ์ด์šฉํ•œ ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ ์ถœ๋ ฅfor (var prop in foo) {    console.log(prop, foo[prop]);}

[์ถœ๋ ฅ ๊ฒฐ๊ณผ]

name fooage 30major computer science

for in ๋ฌธ์ด ์ˆ˜ํ–‰๋˜๋ฉด์„œ prop ๋ณ€์ˆ˜์— foo ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ํ•˜๋‚˜์”ฉ ํ• ๋‹น๋˜๊ณ , prop ์— ํ• ๋‹น๋œ ํ”„๋กœํผํ‹ฐ์˜ ์ด๋ฆ„์„ ํ†ตํ•ด์„œ foo[prop] ์™€ ๊ฐ™์ด ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์„ ์ด์šฉํ•ด ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.


๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ ์‚ญ์ œ#

JS ์—์„œ๋Š” ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ delete ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด ์ฆ‰์‹œ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฃผ์˜ํ•  ์ ์€ delete ์—ฐ์‚ฐ์ž๋Š” ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ญ์ œํ•  ๋ฟ, ๊ฐ์ฒด ์ž์ฒด๋ฅผ ์‚ญ์ œํ•˜์ง€๋Š” ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

// ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์„ ํ†ตํ•œ foo ๊ฐ์ฒด ์ƒ์„ฑvar foo = {    name: 'foo',    nickname: 'babo',};
console.log(foo.nickname); // (์ถœ๋ ฅ๊ฐ’) babodelete foo.nickname; // (์ถœ๋ ฅ๊ฐ’) nickname ํ”„๋กœํผํ‹ฐ ์‚ญ์ œconsole.log(foo.nickname); // (์ถœ๋ ฅ๊ฐ’) undefined
delete foo; // (์ถœ๋ ฅ๊ฐ’) foo ๊ฐ์ฒด ์‚ญ์ œ ์‹œ๋„console.log(foo.name); // (์ถœ๋ ฅ๊ฐ’) foo

์ฐธ์กฐ ํƒ€์ž…์˜ ํŠน์„ฑ#

์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๊ธฐ๋ณธ ํƒ€์ž…์ธ ์ˆซ์ž, ๋ฌธ์ž์—ด, boolean, null, undefined 5๊ฐ€์ง€๋ฅผ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฐ’์€ ๊ฐ์ฒด๋‹ค. ๋ฐฐ์—ด์ด๋‚˜ ํ•จ์ˆ˜ ๋˜ํ•œ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๊ฐ์ฒด๋Š”์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ฐธ์กฐ ํƒ€์ž…์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๊ฐ์ฒด์˜ ๋ชจ๋“  ์—ฐ์‚ฐ์ด ์‹ค์ œ ๊ฐ’์ด ์•„๋‹Œ ์ฐธ์กฐ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

var objA = {    value: 40,};var objB = objA;
console.log(objA.value); // 40console.log(objB.value); // 40
objB.value = 50;
console.log(objA.value); // 50console.log(objB.value); // 50
var a = 40;var b = a;
console.log(a);console.log(b);
b = 50;
console.log(a);console.log(b);

objA ๋Š” ๊ฐ์ฒด ์ž์ฒด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๊ฐ’์„์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค.

objB ์— objA ๋ฅผ ํ• ๋‹นํ•  ๋•Œ ์ฐธ์กฐ๊ฐ’์ด objB ์— ์ „๋‹ฌ๋˜๊ณ , objB ์™€ objA ๊ฐ€๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜์–ด objB.value ์˜ ๊ฐ’์„ 50์œผ๋กœ ๊ฐฑ์‹ ํ•˜์ž objA.value ์˜๊ฐ’๋„ 50์œผ๋กœ ๊ฐฑ์‹ ๋œ๋‹ค.

๋ฐ˜๋ฉด ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ๊ธฐ๋ณธ ํƒ€์ž…์ธ a , b ์˜ ๊ฒฝ์šฐ๋Š” b ์— a ๋ฅผ ํ• ๋‹นํ•  ๋•Œ, ์ฐธ์กฐ๊ฐ’์ด ์ „๋‹ฌ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ฐ’์ด ๋ณต์‚ฌ๋œ๋‹ค. ๋”ฐ๋ผ์„œ b ๋ฅผ 50์œผ๋กœ ๊ฐฑ์‹ ํ•ด๋„ a ์˜ ๊ฐ’์€ 40์œผ๋กœ ์œ ์ง€๋œ๋‹ค.


Call by value vs Call by reference


๊ฐ์ฒด ๋น„๊ต ( == )#

๋™๋“ฑ ์—ฐ์‚ฐ์ž( == )๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐ์ฒด๋ฅผ ๋น„๊ตํ•  ๋•Œ๋„ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๊ฐ’์ด ์•„๋‹Œ ์ฐธ์กฐ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค.

var objA = {    value: 100,};
var objB = {    value: 100,};
var objC = objB;
console.log(objA.value == objB.value); // trueconsole.log(objA == objB); // falseconsole.log(objB == objC); // true

objA.value ์™€ objB.value ๋ฅผ ๋™๋“ฑ ์—ฐ์‚ฐ์ž( == )๋กœ ๋น„๊ตํ•˜๋ฉด, true ๊ฐ€ ๋˜๋Š”๋ฐ์ด ๋‘˜์€ ๊ธฐ๋ณธ ํƒ€์ž…์œผ๋กœ ๊ฐ’ ์ž์ฒด๋ฅผ ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋ฐ˜๋ฉด objA ์™€ objB ๋Š” ๊ฐ™์€ ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ์ง€๋งŒ, ๋‹ค๋ฅธ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‘˜์˜ ์ฐธ์กฐ๊ฐ’์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— false ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

objC ๋Š” objB ์˜ ์ฐธ์กฐ๊ฐ’์„ ๋ณต์‚ฌํ•ด์™”๊ธฐ ๋•Œ๋ฌธ์—, true ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.


ํ‘œ์ค€ ๋™์น˜ ( == ) vs ์—„๊ฒฉ ๋™์น˜ ( === )

== : ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ์ž๋ฃŒํ˜•์ด ๊ฐ™์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ฐ™์•„์ง€๋„๋ก ๋ณ€ํ™˜ํ•œ ํ›„, ๋น„๊ต๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋ชจ๋‘ ๊ฐ์ฒด๋ผ๋ฉด ์ฐธ์กฐ๋ฅผ ๋น„๊ตํ•œ๋‹ค. - ์ˆซ์ž์™€ ๋ฌธ์ž์—ด ๋น„๊ต์‹œ์—” ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด Number *์ž๋ฃŒํ˜• ๊ฐ’์œผ๋กœ ๋ฐ˜์˜ฌ๋ฆผํ•œ๋‹ค.

  • ํ•˜๋‚˜์˜ ์—ฐ์‚ฐ์ž๊ฐ€* Boolean ์ธ ๊ฒฝ์šฐ true ๋Š” 1, false ๋Š” 0์œผ๋กœ๋ณ€ํ™˜ํ•œ๋‹ค. - ๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž์™€ ๋น„๊ตํ•˜๋Š” ๊ฒฝ์šฐ, ์—ฐ์‚ฐ์ž๋Š” ์šฐ์„  ๊ฐ์ฒด์˜ valueOf() ๋˜๋Š” toString() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋ฌธ์ž์—ด ํ˜น์€ ์ˆซ์ž ๊ฐ’์„ ๋ฐ›์œผ๋ ค ์‹œ๋„ํ•œ๋‹ค.

=== : ์ž๋ฃŒํ˜• ๋ณ€ํ™˜ ์—†์ด ๋‘ ์—ฐ์‚ฐ์ž๊ฐ€ ์—„๊ฒฉํžˆ ๊ฐ™์€์ง€ ํŒ๋ณ„ํ•œ๋‹ค. ๋ชจ๋‘ ๊ฐ์ฒด๋ผ๋ฉด ์ฐธ์กฐ๊ฐ’ ๋น„๊ตํ•œ๋‹ค.

- ๐Ÿ”— MDN web docs - ๋น„๊ต ์—ฐ์‚ฐ์ž ์—์„œ


์ฐธ์กฐ์— ์˜ํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹#

๊ธฐ๋ณธ ํƒ€์ž…๊ณผ ์ฐธ์กฐ ํƒ€์ž…์˜ ๊ฒฝ์šฐ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹๋„ ๋‹ค๋ฅด๋‹ค.

๊ธฐ๋ณธ ํƒ€์ž…์˜ ๊ฒฝ์šฐ๋Š” ๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ ๋ฐฉ์‹์œผ๋กœ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ณต์‚ฌ๋œ ๊ฐ’์ด์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด๋„ ์‹ค์ œ๋กœ ํ˜ธ์ถœ๋œ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค.

์ฐธ์กฐ ํƒ€์ž…์˜ ๊ฒฝ์šฐ ์ฐธ์กฐ์— ์˜ํ•œ ํ˜ธ์ถœ ๋ฐฉ์‹์œผ๋กœ ์ธ์ž๋กœ ์ฐธ์กฐ ํƒ€์ž…์ธ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ• ๊ฒฝ์šฐ, ์ธ์ž๋กœ ๋„˜๊ธด ๊ฐ์ฒด์˜ ์ฐธ์กฐ๊ฐ’์ด ์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์ฐธ์กฐ๊ฐ’์„ ์ด์šฉํ•ด์„œ ์‹ค์ œ ๊ฐ์ฒด์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ๋‹ค.

var a = 10;var objA = {    value: 10,};
function changeArg(num, obj) {    num = 20;    obj.value = 20;
    console.log(num); // 20    console.log(obj.value); // 20}
changeArg(a, objA);
console.log(a); // 10 (๋ฐ”๋€Œ์ง€ ์•Š์Œ)console.log(objA.value); // 20 (๋ฐ”๋€œ)

ยท ์•ฝ 15๋ถ„

์ด ๊ธ€์€ ๊ณ ํ˜„์ค€, ์†กํ˜•์ฃผ ๋‹˜์˜ ์ธ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ์ฐธ์กฐํ•˜์—ฌ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

ํ”„๋กœํ† ํƒ€์ž…#

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ๊ฐ์ฒด๋Š” ์ž์‹ ์˜ ๋ถ€๋ชจ ์—ญํ• ์„ ํ•˜๋Š” ๊ฐ์ฒด์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค. (๊ฐ์ฒด์ง€ํ–ฅ์˜ ์ƒ์† ๊ฐœ๋…๊ณผ ๋น„์Šท)

๋ถ€๋ชจ ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์ž์‹ ์˜ ๊ฒƒ์ฒ˜๋Ÿผ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

var foo = {    name: 'foo',    age: 30,};
console.log(foo.toString());console.dir(foo);

[์ถœ๋ ฅ ๊ฒฐ๊ณผ]

2020-03-02-200303-image-0

์ƒ์„ฑํ•œ foo ๊ฐ์ฒด์—๋Š” toString() ๋ฉ”์†Œ๋“œ๊ฐ€ ์—†์Œ์—๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋ฐ, ์ด๋Š” foo ๊ฐ์ฒด์˜ ํ”„๋กœํ† ํƒ€์ž…์— toString() ๋ฉ”์†Œ๋“œ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ๊ฐ์ฒด๋Š” ์ž์‹ ์˜ ํ”„๋กœํ† ํƒ€์ž…์„ ๊ฐ€๋ฆฌํ‚ค๋Š” [[Prototype]] ๋ผ๋Š” ์ˆจ๊ฒจ์ง„ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” __proto__ ๊ฐ€ ์ˆจ๊ฒจ์ง„ [[Prototype]] ํ”„๋กœํผํ‹ฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์šฐ์„ ์€ Object.prototype ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์˜ ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ๋งŒ๊ธฐ์–ตํ•˜๊ณ  ๋„˜์–ด๊ฐ€์ž.

๋˜ํ•œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๊ฒฐ์ •๋œ ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด๋Š” ์ž„์˜์˜ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋„๊ฐ€๋Šฅํ•˜๋‹ค.

(์ด๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด์˜ ์ƒ์† ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค.)


๋ฐฐ์—ด#

๋ฐฐ์—ด์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์˜ ํŠน๋ณ„ํ•œ ํ˜•ํƒœ์ด๋‹ค.

C๋‚˜ Java์˜ ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๊ฐ์ฒด์ง€๋งŒ ํฌ๊ธฐ๋ฅผ ๋”ฐ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ณ , ์–ด๋–ค ์œ„์น˜์— ์–ด๋Š ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋”๋ผ๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ex) var arr = [ 1, '2', true, 1.1, '์•ˆ๋…•ํ•˜์„ธ์š”', [1, 2, 3, 4]];


๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด#

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์ด ์ค‘๊ด„ํ˜ธ {} ๋ฅผ ์ด์šฉํ•œ ํ‘œ๊ธฐ๋ฒ•์ด์—ˆ๋‹ค๋ฉด, ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด์€ ๋Œ€๊ด„ํ˜ธ [] ๋ฅผ์ด์šฉํ•œ๋‹ค.

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์€ key: value ์Œ์œผ๋กœ ํ”„๋กœํผํ‹ฐ์˜ ์ด๋ฆ„๊ณผ ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์„ ๋ชจ๋‘ ํ‘œ๊ธฐํ•ด์•ผ ํ•˜์ง€๋งŒ, ๋ฐฐ์—ด์€ ๊ฐ ์š”์†Œ์˜ ๊ฐ’๋งŒ์„ ํฌํ•จํ•œ๋‹ค.

๊ฐ์ฒด๊ฐ€ ํ”„๋กœํผํ‹ฐ์˜ ์ด๋ฆ„์œผ๋กœ ๋Œ€๊ด„ํ˜ธ๋‚˜ ๋งˆ์นจํ‘œ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ–ˆ๋‹ค๋ฉด, ๋ฐฐ์—ด์€ ๋Œ€๊ด„ํ˜ธ ๋‚ด์— ์ธ๋ฑ์Šค ๊ฐ’์„ ๋„ฃ์–ด์„œ ์ ‘๊ทผํ•œ๋‹ค.


๋ฐฐ์—ด์˜ ์š”์†Œ ์ƒ์„ฑ#

๊ฐ์ฒด๊ฐ€ ๋™์ ์œผ๋กœ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋“ฏ์ด, ๋ฐฐ์—ด๋„ ๋™์ ์œผ๋กœ ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ์šฐ๋Š” ๊ฐ’์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋„ฃ์„ ํ•„์š” ์—†์ด ์•„๋ฌด ์ธ๋ฑ์Šค ์œ„์น˜์—๋‚˜ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

var emptyArr = [];console.log(emptyArr[0]);
emptyArr[0] = 100;emptyArr[3] = 'eight';emptyArr[7] = true;console.log(emptyArr);console.log(emptyArr.length);

๋ฐฐ์—ด์˜ length ํ”„๋กœํผํ‹ฐ#

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ๋ฐฐ์—ด์€ length ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ๋‹ค.

length ํ”„๋กœํผํ‹ฐ๋Š” ๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ํฐ ์ธ๋ฑ์Šค์— 1์„ ๋”ํ•œ ๊ฐ’์ด๋‹ค. (์›์†Œ ๊ฐœ์ˆ˜์™€ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹˜)

var arr = [];console.log(arr.length); // 0
arr[0] = 0;arr[1] = 1;arr[2] = 2;arr[100] = 100;console.log(arr.length); // 101

arr ์˜ ์›์†Œ ๊ฐœ์ˆ˜๊ฐ€ 4๊ฐœ ๋ฟ์ด์ง€๋งŒ, arr.length ์˜ ๊ฐ’์€ 101์ž„.


๋ฐฐ์—ด์˜ length ํ”„๋กœํผํ‹ฐ๋Š” ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋ช…์‹œ์ ์œผ๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

var arr = [0, 1, 2];console.log(arr.length); // 3
arr.length = 5;console.log(arr); // [0, 1, 2, undefined, undefined]
arr.length = 2;console.log(arr); // [0, 1]console.log(arr[2]); // undefined

arr.length ๋ฅผ ๊ธฐ์กด length ๋ณด๋‹ค ํฌ๊ฒŒ ๋ณ€๊ฒฝํ•˜๋ฉด ์›์†Œ๊ฐ€ ํ• ๋‹น๋˜์ง€ ์•Š์•˜๋˜ ์ธ๋ฑ์Šค๋Š” undefined ๋กœ ์ถœ๋ ฅ๋˜๊ณ , ๋˜ํ•œ ๊ธฐ์กด length ๋ณด๋‹ค ์ž‘๊ฒŒ ๋ณ€๊ฒฝํ•˜๋ฉด ํ• ๋‹น๋˜์—ˆ๋˜ ์ธ๋ฑ์Šค๊ฐ€ ์‚ญ์ œ๋œ๋‹ค.


๋ฐฐ์—ด ํ‘œ์ค€ ๋ฉ”์†Œ๋“œ์™€ length ํ”„๋กœํผํ‹ฐ#

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ฐฐ์—ด์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋‹ค์–‘ํ•œ ํ‘œ์ค€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ๋Š” length ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— length ํ”„๋กœํผํ‹ฐ๊ฐ€ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•˜๋‹ค.

  • push() ๋ฉ”์†Œ๋“œ : ๋ฐฐ์—ด์˜ ํ˜„์žฌ length ๊ฐ’์˜ ์œ„์น˜์— ์ƒˆ๋กœ์šด ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

arr.length ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ณ€๊ฒฝํ•œ ์œ„์น˜ ๋’ค์— push() ๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค.


๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด#

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋ฐฐ์—ด ์—ญ์‹œ ๊ฐ์ฒด์ธ๋ฐ, ๋ฐฐ์—ด์€ ์ผ๋ฐ˜ ๊ฐ์ฒด์™€ ์•ฝ๊ฐ„ ์ฐจ์ด๊ฐ€ ์žˆ๋”ฐ.

// colorsArray ๋ฐฐ์—ดvar colorsArray = ['orange', 'yellow', 'green'];console.log(colorsArray[0]); // orangeconsole.log(colorsArray[1]); // yellowconsole.log(colorsArray[2]); // green
// colorsObj ๊ฐ์ฒดvar colorsObj = {    0: 'orange',    1: 'yellow',    2: 'green',};console.log(colorsObj[0]); // orangeconsole.log(colorsObj[1]); // yellowconsole.log(colorsObj[2]); // green
// typeof ์—ฐ์‚ฐ์ž ๋น„๊ตconsole.log(typeof colorsArray); // objectconsole.log(typeof colorsObj); // object
// length ํ”„๋กœํผํ‹ฐconsole.log(colorsArray.length); // 3console.log(colorsObj.length); // undefined
// ๋ฐฐ์—ด ํ‘œ์ค€ ๋ฉ”์†Œ๋“œcolorsArray.push('red');console.log(colorsArray); // ['orange', 'yellow', 'green', 'red']colorsObj.push('red'); // Uncaught TypeError: Object #<Object> has no method 'push'
  • ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด๋Š” ์œ ์‚ฌํ•˜๊ฒŒ ๋ฆฌํ„ฐ๋Ÿด ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฒฐ๊ณผ๊ฐ’ ์ถœ๋ ฅ๊ณผ ํ”„๋กœํผํ‹ฐ์ ‘๊ทผ ๋ชจ๋‘ ๋น„์Šทํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ์—์„œ ํ”„๋กœํผํ‹ฐ ์†์„ฑ์„ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ์ ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด [] ๋‚ด๋ถ€์— ์ˆซ์ž๊ฐ€ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ, ์ˆซ์ž๋ฅผ ์ž๋™์œผ๋กœ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ๋ฐ”๊พธ์–ด์ฃผ์–ด ์ •์ƒ์ ์œผ๋กœ ์ ‘๊ทผ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  • typeof ์—ฐ์‚ฐ์ž ๊ฒฐ๊ณผ๊ฐ€ ๋ชจ๋‘ object ์ด๋‹ค.

  • ๊ฐ์ฒด์—๋Š” length ํ”„๋กœํผํ‹ฐ๊ฐ€ ์—†๋‹ค. ( undefined )

  • ๊ฐ์ฒด์—์„œ๋Š” ๋ฐฐ์—ด ํ‘œ์ค€ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค.

๊ฐ์ฒด์˜ ๊ฒฝ์šฐ ๊ฐ์ฒด ํ‘œ์ค€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” Object.prototype ๊ฐ์ฒด๊ฐ€ ํ”„๋กœํ† ํƒ€์ž…์ธ ๋ฐ˜๋ฉด ๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ Array.prototype ๊ฐ์ฒด๊ฐ€ ํ”„๋กœํ† ํƒ€์ž…์ด๋‹ค. ๋˜ํ•œ Array.prototype ์˜ ํ”„๋กœํ† ํƒ€์ž…์€ Object.prototype ๊ฐ์ฒด์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฐ์—ด์€ Array.prototype ์— ํฌํ•จ๋œ ๋ฐฐ์—ด ํ‘œ์ค€ ๋ฉ”์†Œ๋“œ์™€ Object.prototype ์˜ ๊ฐ์ฒด ํ‘œ์ค€๋ฉ”์†Œ๋“œ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


๋ฐฐ์—ด์˜ ํ”„๋กœํผํ‹ฐ ๋™์  ์ƒ์„ฑ#

๋ฐฐ์—ด๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋กœ, ์ธ๋ฑ์Šค๊ฐ€ ์ˆซ์ž์ธ ๋ฐฐ์—ด ์›์†Œ ์ด์™ธ์—๋„ ๊ฐ์ฒด์ฒ˜๋Ÿผ ๋™์ ์œผ๋กœํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

// ๋ฐฐ์—ด ์ƒ์„ฑvar arr = ['zero', 'one', 'two'];console.log(arr.length); // 3
// ํ”„๋กœํผํ‹ฐ ๋™์  ์ถ”๊ฐ€arr.color = 'blue';arr.name = 'number_array';console.log(arr.length); // 3
// ๋ฐฐ์—ด ์›์†Œ ์ถ”๊ฐ€arr[3] = 'red';console.log(arr.length); // 4
// ๋ฐฐ์—ด ๊ฐ์ฒด ์ถœ๋ ฅconsole.dir(arr);

[ console.dir(arr) ์ถœ๋ ฅ ๊ฒฐ๊ณผ]

2020-03-02-200303-image-1

๋ฐฐ์—ด๋„ ๊ฐ์ฒด์ฒ˜๋Ÿผ key: value ํ˜•ํƒœ๋กœ ๋ฐฐ์—ด ์›์†Œ ๋ฐ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.


๋ฐฐ์—ด์˜ ํ”„๋กœํผํ‹ฐ ์—ด๊ฑฐ#

๊ฐ์ฒด๋Š” for in ๋ฌธ์œผ๋กœ ํ”„๋กœํผํ‹ฐ๋ฅผ ์—ด๊ฑฐํ•˜๋Š”๋ฐ, ๋ฐฐ์—ด๋„ ๊ฐ์ฒด์ด๋ฏ€๋กœ for in ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋ถˆํ•„์š”ํ•œ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ for ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

for of ๋ฌธ for in ์€ ๊ฐ์ฒด์˜ ๋ชจ๋“  ์—ด๊ฑฐ๊ฐ€๋Šฅํ•œ ์†์„ฑ์— ๋Œ€ํ•ด ๋ฐ˜๋ณตํ•˜๋Š” ๋ฐ˜๋ฉด, for of ๋ฌธ์€ ์ปฌ๋ ‰์…˜ ์ „์šฉ์œผ๋กœ [Symbol.iterator] ์†์„ฑ์ด ์žˆ๋Š” ์ปฌ๋ ‰์…˜ ์š”์†Œ์— ๋Œ€ํ•ด ๋ฐ˜๋ณตํ•œ๋‹ค.

const iterable = [10, 20, 30];
for (const value of iterable) {    console.log(value);}// 10// 20// 30

โ˜ ์˜๋ฌธ : ์ฐธ์กฐ ๋ณ€์ˆ˜์˜ let , const ์ฐจ์ด - ๐Ÿ”— [javascript] ES6 ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผํ•  ๋ฌธ๋ฒ• let, const ์ฐจ์ด์ 

๊ธฐ๋ณธ ๋ณ€์ˆ˜์ผ ๋•Œ

  • let : ๋ณ€์ˆ˜

  • const : ์ƒ์ˆ˜

์ฐธ์กฐ ๋ณ€์ˆ˜์ผ ๋•Œ

  • let : ์ฐธ์กฐ๊ฐ’์ด ๋ณ€ํ•  ์ˆ˜ ์žˆ์Œ. (๋‹ค๋ฅธ ๊ฐ์ฒด ์ง€์ • ๊ฐ€๋Šฅ)

  • const : ์ฐธ์กฐ๊ฐ’์ด ๋ณ€ํ•  ์ˆ˜ ์—†์Œ. (๋‚ด๋ถ€ ์†์„ฑ์€ ๋ณ€ํ™” ๊ฐ€๋Šฅ)

const objA = {};let objB = {};
objA = objB; // Error: "objA" is read-onlyobjB = objA;

๋ฐฐ์—ด ์š”์†Œ ์‚ญ์ œ#

๋ฐฐ์—ด๋„ ๊ฐ์ฒด์ด๋ฏ€๋กœ ๋ฐฐ์—ด ์š”์†Œ๋‚˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฐ delete ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋‹ค.

var arr = ['zero', 'one', 'two', 'three'];delete arr[2];console.log(arr); // ['zero', 'one', undefined, 'three']console.log(arr.length); // 4

delete arr[2] ๋กœ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๋ฉด, arr[2] ์— undefined ๊ฐ€ ํ• ๋‹น๋˜๊ฒŒ๋˜์ง€๋งŒ, ๋ฐฐ์—ด์˜ length ๊ฐ’์€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰ ์›์†Œ ์ž์ฒด๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋•Œ๋ฌธ์— ๋ฐฐ์—ด์—์„œ ์š”์†Œ๋ฅผ ์™„์ „ํžˆ ์‚ญ์ œํ•  ๊ฒฝ์šฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” splice() ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.


splice() ํ•จ์ˆ˜#

array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

๋งค๊ฐœ๋ณ€์ˆ˜

  • start : ๋ฐฐ์—ด์˜ ๋ณ€๊ฒฝ์„ ์‹œ์ž‘ํ•  ์ธ๋ฑ์Šค, ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ณด๋‹ค ํฐ ๊ฐ’์ด๋ผ๋ฉด ๋ฐฐ์—ด์˜ ๊ธธ์ด๋กœ ์„ค์ •๋จ. ์Œ์ˆ˜์ผ ๊ฒฝ์šฐ ๋ฐฐ์—ด์˜ ๋์—์„œ๋ถ€ํ„ฐ ์„ธ์–ด๊ฐ€๊ณ , ์ ˆ๋Œ€๊ฐ’์ด ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ณด๋‹ค ํฐ๊ฒฝ์šฐ 0์œผ๋กœ ์„ค์ •๋จ

  • deleteCount [์˜ต์…”๋„] : ๋ฐฐ์—ด์—์„œ ์ œ๊ฑฐํ•  ์š”์†Œ์˜ ์ˆ˜. 0์ด๋ฉด ์–ด๋–ค ์š”์†Œ๋„ ์ œ๊ฑฐํ•˜์ง€์•Š์Œ. (์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉ)

  • item1, item2, ... [์˜ต์…”๋„] : ๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•  ์š”์†Œ. ์—†์œผ๋ฉด splice() ๋Š” ์š”์†Œ๋ฅผ์ œ๊ฑฐํ•˜๊ธฐ๋งŒ ํ•œ๋‹ค.

๋ฐ˜ํ™˜ ๊ฐ’

  • ์ œ๊ฑฐํ•œ ์š”์†Œ๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด, ํ•˜๋‚˜๋งŒ ์ œ๊ฑฐํ•œ ๊ฒฝ์šฐ ๊ธธ์ด๊ฐ€ 1์ธ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ ์•„๋ฌด ๊ฒƒ๋„์ œ๊ฑฐํ•˜์ง€ ์•Š์œผ๋ฉด ๋นˆ ๋ฐฐ์—ด.

Array() ์ƒ์„ฑ์ž ํ•จ์ˆ˜#

์ผ๋ฐ˜์ ์ธ ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋„ ๊ฒฐ๊ตญ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์„ ๋‹จ์ˆœํ™”ํ•œ ๊ฒƒ์ด๋‹ค.

Array() ์ƒ์„ฑ์ž๋กœ ์ƒ์„ฑํ•  ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ new ์—ฐ์‚ฐ์ž๋ฅผ ์จ์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์ž.

Array() ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœํ•  ๋•Œ ์ธ์ž ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ๋™์ž‘์ด ๋‹ค๋ฅด๋‹ค.

  • ํ˜ธ์ถœํ•  ๋•Œ ์ธ์ž๊ฐ€ ์ˆซ์ž 1๊ฐœ ์ผ ๊ฒฝ์šฐ : ํ˜ธ์ถœ๋œ ์ธ์ž๋ฅผ length ๋กœ ๊ฐ–๋Š” ๋นˆ ๋ฐฐ์—ด ์ƒ์„ฑ

  • ๊ทธ ์™ธ : ํ˜ธ์ถœ๋œ ์ธ์ž๋ฅผ ์š”์†Œ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด ์ƒ์„ฑ

var foo = new Array(3);console.log(foo); // [undefined, undefined, undefined]console.log(foo.length); // 3
var bar = new Array(1, 2, 3);console.log(bar); // [1, 2, 3]console.log(bar.length); // 3

์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด#

๋งŒ์•ฝ ์ผ๋ฐ˜ ๊ฐ์ฒด์— length ๋ผ๋Š” ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? - ์ด๋Ÿฌํ•œ ๊ฐ์ฒด๋ฅผ ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด(array-like object) ๋ผ๊ณ  ํ•œ๋‹ค.

์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด๋Š” ๊ฐ์ฒด์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ‘œ์ค€ ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๊ฐ€๋Šฅํ•˜๋‹ค. ( apply() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค)

var arr = ['bar'];var obj = {    name: 'foo',    length: 1,};
arr.push('baz');console.log(arr); // ['bar', 'baz']
Array.prototype.push.apply(obj, ['baz']);console.log(obj); // { '1': 'baz', name: 'foo', length: 2}

arguments ๊ฐ์ฒด๋‚˜ jQuery ๊ฐ์ฒด๊ฐ€ ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ๋˜์–ด ์žˆ๋‹ค.


๊ธฐ๋ณธ ํƒ€์ž…๊ณผ ํ‘œ์ค€ ๋ฉ”์„œ๋“œ#

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ˆซ์ž, ๋ฌธ์ž์—ด, Boolean ์— ๋Œ€ํ•ด ๊ฐ ํƒ€์ž…๋ณ„๋กœ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ ํ‘œ์ค€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค.

๊ธฐ๋ณธ ํƒ€์ž…์˜ ๊ฒฝ์šฐ๋Š” ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ๋ฐ ์–ด๋–ป๊ฒŒ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?

๊ธฐ๋ณธ๊ฐ’์€ ๋ฉ”์†Œ๋“œ ์ฒ˜๋ฆฌ ์ˆœ๊ฐ„์— ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜๋œ ๋‹ค์Œ ํƒ€์ž…๋ณ„ ํ‘œ์ค€ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ๋๋‚˜๋ฉด ๋‹ค์‹œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋ณต๊ท€ํ•œ๋‹ค.

var num = 0.5;console.log(num.toExponential(1)); // 5.0e-1
console.log('test'.charAt(2)); // s

์—ฐ์‚ฐ์ž#

+ ์—ฐ์‚ฐ์ž#

๋”ํ•˜๊ธฐ ์—ฐ์‚ฐ๊ณผ ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ

typeof ์—ฐ์‚ฐ์ž#

ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์„ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๋ฆฌํ„ด.

TypeNametypeof ๊ฒฐ๊ณผ
๊ธฐ๋ณธ ํƒ€์ž…์ˆซ์ž'number'
๊ธฐ๋ณธ ํƒ€์ž…๋ฌธ์ž์—ด'string'
๊ธฐ๋ณธ ํƒ€์ž…Boolean'boolean'
๊ธฐ๋ณธ ํƒ€์ž…null'object'
๊ธฐ๋ณธ ํƒ€์ž…undefined'undefined'
์ฐธ์กฐ ํƒ€์ž…๊ฐ์ฒด'object'
์ฐธ์กฐ ํƒ€์ž…๋ฐฐ์—ด'object'
์ฐธ์กฐ ํƒ€์ž…ํ•จ์ˆ˜'function'

โ˜ null ๊ณผ ๋ฐฐ์—ด์ด 'object' ๋ผ๋Š” ์ . ํ•จ์ˆ˜๋Š” 'function' ์ด๋ผ๋Š” ์ ์— ์œ ์˜


๋™๋“ฑ ์—ฐ์‚ฐ์ž( == )์™€ ์ผ์น˜ ์—ฐ์‚ฐ์ž( === )#

๋™๋“ฑ ์—ฐ์‚ฐ์ž๋Š” ๋น„๊ตํ•˜๋ ค๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์ด ๋‹ค๋ฅผ ๊ฒฝ์šฐ์— ํƒ€์ž… ๋ณ€ํ™˜ ํ›„ ๋น„๊ต.

์ผ์น˜ ์—ฐ์‚ฐ์ž๋Š” ํƒ€์ž…์ด ๋‹ค๋ฅผ ๊ฒฝ์šฐ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๋น„๊ต.

== ๋™๋“ฑ ์—ฐ์‚ฐ์ž๋Š” ๊ถŒ์žฅ๋˜์ง€ ์•Š์Œ.


!! ์—ฐ์‚ฐ์ž#

!! ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ Boolean ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

console.log(!!0); // falseconsole.log(!!1); // trueconsole.log(!!''); // falseconsole.log(!!'string'); // trueconsole.log(!!false); // falseconsole.log(!!true); // trueconsole.log(!!null); // falseconsole.log(!!undefined); // falseconsole.log(!!{}); // trueconsole.log(!![]); // true

null ๊ณผ undefined ๋Š” false , ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์€ ๋ชจ๋‘ ๋น„์–ด์žˆ์–ด๋„ true

ยท ์•ฝ 10๋ถ„

์ธํ„ฐ๋„ท ๊ฐ•์ขŒ๋กœ๋Š” ์ดํ•ด๊ฐ€ ์•ˆ๋˜๋Š” ์ ๋“ค์ด ๋งŽ์•„์„œ '์ธ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ' ebook์„ ๊ตฌ์ž…ํ•ด ๊ณต๋ถ€ํ•œ๋‹ค.

์ด ๊ธ€์€ ๊ณ ํ˜„์ค€, ์†กํ˜•์ฃผ ๋‹˜์˜ ์ธ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ์ฐธ์กฐํ•˜์—ฌ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

JavaScript ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ์—ฐ์‚ฐ์ž#

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ’๋“ค์€ ํฌ๊ฒŒ ๊ธฐ๋ณธ ํƒ€์ž…๊ณผ ์ฐธ์กฐ ํƒ€์ž…์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

  • ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…

    • ์ˆซ์ž

    • ๋ฌธ์ž์—ด

    • boolean

    • null

    • undefined

  • ์ฐธ์กฐ ๋ฐ์ดํ„ฐ ํƒ€์ž…

    • ๊ฐ์ฒด

      • ๋ฐฐ์—ด

      • ํ•จ์ˆ˜

      • ์ •๊ทœํ‘œํ˜„์‹

๋ฐฐ์—ด, ํ•จ์ˆ˜, ์ •๊ทœํ‘œํ˜„์‹์ด ๋ชจ๋‘ ๊ฐ์ฒด์— ์†ํ•˜๋Š” ๊ฐœ๋….


๊ธฐ๋ณธ ํƒ€์ž…#

๊ธฐ๋ณธ ํƒ€์ž…์˜ ํŠน์ง•์€ ๊ทธ ์ž์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค๋Š” ๊ฒƒ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋Š์Šจํ•œ ํƒ€์ž… ์ฒดํฌ ์–ธ์–ด๋‹ค. C๋‚˜ Java ๋“ฑ์˜ ์—„๊ฒฉํ•œ ํƒ€์ž… ์ฒดํฌ ์–ธ์–ด๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ๋ณ€์ˆ˜์— ์ €์žฅํ•  ๋ฐ์ดํ„ฐ ์ข…๋ฅ˜์— ๋”ฐ๋ผ char, int, float ๋“ฑ์˜ ์˜ˆ์•ฝ์–ด๋ฅผ ์ด์šฉํ•ด์„œ ๋ณ€์ˆ˜์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ง€์ •ํ•œ๋‹ค.

๋ฐ˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ํƒ€์ž…์„ ๋ฏธ๋ฆฌ ์ •ํ•˜์ง€ ์•Š๊ณ  var (let, const) ๋ผ๋Š” ํ•œ ๊ฐ€์ง€ ํ‚ค์›Œ๋“œ๋กœ๋งŒ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค.

var intNum = 10;var floatNum = 0.1;
var singleQuoteStr = 'Single quote string';var doubleQuoteStr = 'Double quote string';var singleChar = 'a';
var boolVar = true;
var emptyVar;
var nullVar = null;
console.log(    typeof intNum, // number    typeof floatNum, // number    typeof singleQuoteStr, // string    typeof doubleQuoteStr, // string    typeof boolVar, // boolean    typeof emptyVar, // undefined    typeof nullVar, //object);

์ˆซ์ž#

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋ชจ๋“  ์ˆซ์ž๋ฅผ 64๋น„ํŠธ ๋ถ€๋™ ์†Œ์ˆ˜์  ํ˜•ํƒœ๋กœ ์ €์žฅํ•œ๋‹ค.

intNum๊ณผ floatNum ๋ณ€์ˆ˜ ๋ชจ๋‘ typeof ์—ฐ์‚ฐ์ž์˜ ๊ฒฐ๊ณผ๊ฐ’์ด number ํƒ€์ž…์ด๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์ •์ˆ˜ํ˜•์ด ๋”ฐ๋กœ ์—†๊ณ  ๋ชจ๋“  ์ˆซ์ž๋ฅผ ์‹ค์ˆ˜๋กœ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ๋‚˜๋ˆ—์…ˆ ์—ฐ์‚ฐ์„ ํ•  ๋•Œ 5/2 ์˜๊ฒฝ์šฐ 2๊ฐ€ ์•„๋‹ˆ๋ผ 2.5๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

var num = 5 / 2;
console.log(num); // 2.5console.log(Math.floor(num)); // 2

๋ฌธ์ž์—ด#

๋ฌธ์ž์—ด์€ ์ž‘์€ ๋”ฐ์˜ดํ‘œ๋‚˜ ํฐ ๋”ฐ์˜ดํ‘œ๋กœ ์ƒ์„ฑํ•œ๋‹ค. typeof์˜ ๊ฒฐ๊ณผ๋Š” string์ด๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” C์–ธ์–ด์˜ char ํƒ€์ž…๊ณผ ๊ฐ™์ด ๋ฌธ์ž ํ•˜๋‚˜๋งŒ์„ ๋ณ„๋„๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ์ดํ„ฐํƒ€์ž…์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ฃผ์˜ํ•ด์•ผํ•  ์ ์€ ํ•œ ๋ฒˆ ์ •์˜๋œ ๋ฌธ์ž์—ด์€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. (immutable)


๋ถˆ๋ฆฐ๊ฐ’#

true, false๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ถˆ๋ฆฐ ํƒ€์ž…์ด๋‹ค.


null๊ณผ undefined#

์ด ๋‘ ํƒ€์ž…์€ ๋ชจ๋‘ '๊ฐ’์ด ๋น„์–ด์žˆ์Œ'์„ ๋œปํ•œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ™˜๊ฒฝ ๋‚ด์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋Š” undefined ํƒ€์ž…์ด๋ฉฐ , undefined ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋Š” ๋ณ€์ˆ˜ ์ž์ฒด์˜ ๊ฐ’ ๋˜ํ•œ undefined์ด๋‹ค. ์ด์ฒ˜๋Ÿผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ undefined๋Š” ํƒ€์ž…์ด์ž, ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค

null ํƒ€์ž… ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ๊ฐ’์ด ๋น„์–ด์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค .

์ฃผ์˜ํ•  ์ ์€ null ํƒ€์ž… ๋ณ€์ˆ˜์˜ typeof ๊ฒฐ๊ณผ๊ฐ€ null์ด ์•„๋‹ˆ๋ผ object๋ผ๋Š” ๊ฒƒ์ด๊ณ ๋”ฐ๋ผ์„œ null ํƒ€์ž… ๋ณ€์ˆ˜์ธ์ง€ ํ™•์ธํ•  ๋•Œ typeof ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๊ณ , ์ผ์น˜ ์—ฐ์‚ฐ์ž (===)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ง์ ‘ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

var nullVar = null;
console.log(typeof nullVar === null);console.log(nullVar === null);

์ฐธ์กฐ ํƒ€์ž…(๊ฐ์ฒด ํƒ€์ž…)#

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ˆซ์ž, ๋ฌธ์ž์—ด, boolean, null, undefined ๊ฐ™์€ ๊ธฐ๋ณธ ํƒ€์ž…์„ ์ œ์™ธํ•œ๋ชจ๋“  ๊ฐ’์€ ๊ฐ์ฒด๋‹ค.

๋”ฐ๋ผ์„œ ๋ฐฐ์—ด, ํ•จ์ˆ˜, ์ •๊ทœํ‘œํ˜„์‹ ๋“ฑ๋„ ๋ชจ๋‘ ๊ฒฐ๊ตญ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋กœ ํ‘œํ˜„๋œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ์ฒด๋Š” ๋‹จ์ˆœํžˆ '์ด๋ฆ„(key):๊ฐ’(value)' ํ˜•ํƒœ์˜ ํ”„๋กœํผํ‹ฐ๋“ค์„ ์ €์žฅํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋กœ์„œ, ์ปดํ“จํ„ฐ ๊ณผํ•™ ๋ถ„์•ผ์—์„œ ํ•ด์‹œ(hash)๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์ƒ๋‹นํžˆ ์œ ์‚ฌํ•˜๋‹ค.

๊ฐ์ฒด๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ธฐ๋ณธ ํƒ€์ž…์˜ ๊ฐ’์„ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋Š” ํ•จ์ˆ˜๋กœ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ฉ”์†Œ๋“œ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.


๊ฐ์ฒด ์ƒ์„ฑ#

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • Object() ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ์ด์šฉ
var foo = new Object();
foo.name = 'foo';foo.age = 30;foo.gender = 'male';
console.log(typeof foo); // objectconsole.log(foo); // { name: 'foo', age: 30, gender: 'male' }
  • ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๋ฐฉ์‹ ์ด์šฉ
var foo = {    name: 'foo',    age: 30,    gender: 'male',};
console.log(typeof foo); // objectconsole.log(foo); // { name: 'foo', age: 30, gender: 'male' }

์ค‘๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•ด์„œ ์ƒ์„ฑ, {} ์•ˆ์— ์•„๋ฌด๊ฒƒ๋„ ์ ์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋นˆ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

  • ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ์ด์šฉ

์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์Œ์— ๋‹ค๋ฃฌ๋‹ค.


๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ ์ฝ๊ธฐ/์“ฐ๊ธฐ/๊ฐฑ์‹ #

๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•

  • ๋Œ€๊ด„ํ˜ธ ( [] ) ํ‘œ๊ธฐ๋ฒ•

  • ๋งˆ์นจํ‘œ ( . ) ํ‘œ๊ธฐ๋ฒ•

var foo = {    name: 'foo',    major: 'computer science',};
// ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ ์ฝ๊ธฐconsole.log(foo.name); // fooconsole.log(foo['name']); // fooconsole.log(foo.nickname); // undefined
// ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ ๊ฐฑ์‹ foo.major = 'electronics engineering';console.log(foo.major); // electronics engineering
foo['major'] = 'digital media';console.log(foo['major']); // digital media
// ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ ๋™์  ์ƒ์„ฑfoo.age = 30;console.log(foo.age); // 30
foo['gender'] = 'male';console.log(foo['gender']); // male

๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์˜ ๊ฒฝ์šฐ ์ ‘๊ทผํ•˜๋ ค๋Š” ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๋งŒ๋“  ๋‹ค์Œ ๋Œ€๊ด„ํ˜ธ๋กœ ๋‘˜๋Ÿฌ์‹ธ์•ผ ๋œ๋‹ค.

๋งŒ์•ฝ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ  foo[name] ๋กœ ์ ‘๊ทผํ•œ๋‹ค๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” name ์ด๋ผ๋Š” ๋ณ€์ˆ˜ ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ฐพ์•„ toString() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ๋ ค๋Š” ์‹œ๋„๋ฅผ ํ•œ๋‹ค.


๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ• ๋งŒ์„ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ์ ‘๊ทผํ•˜๋ ค๋Š” ํ”„๋กœํผํ‹ฐ๊ฐ€ ํ‘œํ˜„์‹์ด๊ฑฐ๋‚˜ ์˜ˆ์•ฝ์–ด์ผ ๊ฒฝ์šฐ, ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•๋งŒ์„ ์ด์šฉํ•ด์„œ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค. ex) foo['full-name']


๊ฐ์ฒด ์†์„ฑ ์ด๋ฆ„ ์ง“๊ธฐ#

์  ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์†์„ฑ์˜ ์ด๋ฆ„์ด ์‹๋ณ„์ž ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผ ํ•œ๋‹ค. ์‹๋ณ„์ž๊ทœ์น™์„ ๋”ฐ๋ฅผ ๊ฒฝ์šฐ ์†์„ฑ์˜ ์ด๋ฆ„์„ '' ๋กœ ๊ฐ์‹ธ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.


์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹๋ณ„์ž ์ฝ”๋“œ ๋‚ด์˜ ๋ณ€์ˆ˜, ํ•จ์ˆ˜, ์†์„ฑ์„ ์‹๋ณ„ํ•˜๋Š” ๋ฌธ์ž์—ด๋Œ€์†Œ๋ฌธ์ž๋ฅผ๊ตฌ๋ณ„ํ•˜๋ฉฐ ์œ ๋‹ˆ์ฝ”๋“œ ๊ธ€์ž, $ , _ ,์ˆซ์ž(0-9)๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ˆซ์ž๋กœ ์‹œ์ž‘ํ• ์ˆ˜๋Š” ์—†๋‹ค.

๐Ÿ”—MDN web docs - ์‹๋ณ„์ž


๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์—์„œ๋Š” ๋ฌธ์ž์—ด์ด๋‚˜ Symbol์„ ์†์„ฑ์˜ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ์œ ํšจํ•œ์‹๋ณ„์ž๊ฐ€ ์•„๋‹ˆ์–ด๋„ ๋œ๋‹ค. 1foo , !bar! , ์‹ฌ์ง€์–ด ๊ณต๋ฐฑ ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” foo['name'] ์ฒ˜๋Ÿผ ' ' ๋กœ ๊ฐ์‹ธ์ฃผ์–ด์•ผ ํ•œ๋‹ค.


๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์˜ค์ง ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋œ ์†์„ฑ ์ด๋ฆ„์ด ' ' ๋กœ๊ฐ์‹ธ์ง€ ์•Š์•„๋„ ๊ฐ€๋Šฅํ•œ๋ฐ (์‹๋ณ„์ž ๊ทœ์น™์— ์–ด๊ธ‹๋‚จ.) ์ด ์ด์œ ๋Š” ์•„์ง ์ž˜ ๋ชจ๋ฅด๊ฒ ์Œ. ์ˆซ์ž๊ฐ€ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๋€Œ๋Š” ํŠน์ง•์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Œ. ์ด ๊ฒฝ์šฐ ์  ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ณ , ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์—์„œ๋Š” foo['์ˆซ์ž'] ์™€ foo[์ˆซ์ž] ๋ชจ๋‘ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•จ.


์ฐธ๊ณ ์ž๋ฃŒ#

๐Ÿ”—MDN web docs - ์†์„ฑ ์ ‘๊ทผ์ž

๐Ÿ”—MDN web docs - ์‹๋ณ„์ž

๐Ÿ”—JavaScript Object['key'] vs Object.key ์ฐจ์ด


ยท ์•ฝ 6๋ถ„

JavaScript#

๊ฐ์ฒด#

  • ๊ฐ์ฒด ์„ ์–ธ
const ironMan = {    'name': 'ํ† ๋‹ˆ์Šคํƒ€ํฌ',    'actor': '๋กœ๋ฒ„ํŠธ ๋‹ค์šฐ๋‹ˆ ์ฃผ๋‹ˆ์–ด',    'alias': '์•„์ด์–ธ๋งจ',    'key is string': true,};

๊ฐ์ฒด๋Š” { } ๋กœ ๊ฐ์‹ธ๊ณ  key: value ํŽ˜์–ด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”๋ฐ, key ๋Š” ๋ฌธ์ž์—ด๋กœ ๊ณต๋ฐฑ์ด ์žˆ๋‹ค๋ฉด ' ๋กœ ๊ฐ์‹ธ์•ผ ํ•œ๋‹ค. ๋˜ํ•œ , ๋ฅผ ๋นผ๋†“์œผ๋ฉด error๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  • ๊ฐ์ฒด ํ˜ธ์ถœ
console.log(ironMan);// Object {name: "ํ† ๋‹ˆ์Šคํƒ€ํฌ", actor: "๋กœ๋ฒ„ํŠธ ๋‹ค์šฐ๋‹ˆ ์ฃผ๋‹ˆ์–ด", alias: "์•„์ด์–ธ๋งจ"}
console.log(ironMan.name);// ํ† ๋‹ˆ์Šคํƒ€ํฌ
console.log(ironMan.actor);// ๋กœ๋ฒ„ํŠธ ๋‹ค์šฐ๋‹ˆ ์ฃผ๋‹ˆ์–ด
console.log(ironMan.alias);// ์•„์ด์–ธ๋งจ
  • ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถ„ํ•ด
const {alias, name, actor} = hero;const text = `${alias}(${name}) ์—ญํ• ์„ ๋งก์€ ๋ฐฐ์šฐ๋Š” ${actor} ์ž…๋‹ˆ๋‹ค.`;console.log(text);

๊ฐ์ฒด์—์„œ ๊ฐ’์„ ์ถ”์ถœํ•ด๋ƒ„.

  • ๊ฐ์ฒด ๋‚ด๋ถ€ ํ•จ์ˆ˜
const dog = {    name: '๋ฉ๋ฉ์ด',    sound: '๋ฉ๋ฉ!',    say: function () {        console.log(this.sound);    },};

function() ์€ ์ต๋ช… ํ•จ์ˆ˜์ด์ง€๋งŒ, function dogFunc() ์ฒ˜๋Ÿผ named ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด๋„ ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•จ์ˆ˜๋ฅผ ๊ฐ์ฒด ๋‚ด๋ถ€์— ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

const dog = {    name: '๋ฉ๋ฉ์ด',    sound: '๋ฉ๋ฉ!',    say: () => {        console.log(this.sound);    },};
dog.say();
// TypeError: Cannot read property 'sound' of undefined

function ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ this ๋กœ ์ž์‹ ์ด ์†ํ•œ ์œ„์น˜์™€ ์—ฐ๊ฒฐ์‹œํ‚ค๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ.

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ์ž๊ธฐ ์ž์‹ ์ด ์†ํ•œ this ๊ฐ€ ์–ด๋””์ธ์ง€ ๋ชจ๋ฅธ๋‹ค

const dog = {    name: '๋ฉ๋ฉ์ด',    sound: '๋ฉ๋ฉ!',    say: function () {        console.log(this.sound);    },};
const cat = {    name: '์•ผ์˜น์ด',    sound: '์•ผ์˜น~',};
cat.say = dog.say;dog.say(); // ๋ฉ๋ฉ!cat.say(); // ์•ผ์˜น~
// Errorconst dogSay = dog.say;const catSay = cat.say;dogSay();catSay();

cat.say = dog.say; ๋กœ ํ•จ์ˆ˜๋ฅผ ํ• ๋‹นํ•ด์ค„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋งŒ์•ฝ ์™ธ๋ถ€์— ์žˆ๋Š” const dogSay ์— ํ• ๋‹นํ•œ๋‹ค๋ฉด, ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ this ๊ฐ€ ์–ด๋Š scope ์ธ์ง€๋ฅผ ์•Œ์ง€ ๋ชปํ•ด error ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  • getter์™€ setter ํ•จ์ˆ˜
// EX 1const dog = {    _name: '๋ฉ๋ฉ์ด',    get name() {        console.log('_name์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.');        return this._name;    },    set name(value) {        console.log('์ด๋ฆ„์ด ๋ฐ”๋€๋‹ˆ๋‹ค..' + value);        this._name = value;    },};
console.log(dog.name);dog.name = '๋ญ‰๋ญ‰์ด';console.log(dog.name);
// EX 2const numbers = {    _a: 1,    _b: 2,    sum: 3,    calculate() {        console.log('calculate');        this.sum = this._a + this._b;    },    get a() {        return this._a;    },    get b() {        return this._b;    },    set a(value) {        this._a = value;        this.calculate();    },    set b(value) {        this._b = value;        this.calculate();    },};
console.log(numbers.sum);numbers.a = 5;numbers.a = 6;numbers.a = 7;numbers.a = 8;console.log(numbers.sum);

get ํ•จ์ˆ˜์™€ sum ํ•จ์ˆ˜๋Š” ์ด๋ฆ„์ด ๊ฐ™์•„๋„ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๋ณ€์ˆ˜์™€ ์ด๋ฆ„์ด ๊ฐ™์œผ๋ฉด ์•ˆ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜๋ช… ์•ž์— _ ๋ฅผ ๋ถ™์—ฌ์ค€๋‹ค.

EX2์—์„œ์ฒ˜๋Ÿผ get, set์„ ์‚ฌ์šฉํ•  ๋•Œ์˜ ์žฅ์ ์€ a์˜ ๊ฐ’์ด ๋ณ€ํ•  ๋•Œ์— calculate ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜์—ฌ sum ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜๋ฏ€๋กœ ํšจ์œจ์ ์ด๋‹ค.

  • ๊ฐ์ฒด ๋‚ด์žฅ ํ•จ์ˆ˜
const doggy = {    ์ด๋ฆ„: '๋ฉ๋ฉ์ด',    ์†Œ๋ฆฌ: '๋ฉ๋ฉ',};
console.log(doggy);
console.log(Object.entries(doggy));console.log(Object.keys(doggy));console.log(Object.values(doggy));

๋ฐฐ์—ด#

JS์—์„œ ๋ฐฐ์—ด์€ ํƒ€์ž…์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ex) [ 'a', 1, 'text' ]

๋ฐฐ์—ด ๋‚ด์žฅํ•จ์ˆ˜

  • push

  • pop

  • length

๋ฐ˜๋ณต๋ฌธ#

  • for ๋ฌธ

  • while ๋ฌธ

  • for - of

const numbers = [10, 20, 30, 40, 50];
for (let number of numbers) {    console.log(number);}

์ปฌ๋ ‰์…˜ ์ „์šฉ ๋ฐ˜๋ณต ๊ตฌ๋ฌธ

  • for - in
var obj = {    a: 1,    b: 2,    c: 3,};
for (var prop in obj) {    console.log(prop, obj[prop]); // a 1, b 2, c 3}

๊ฐ์ฒด์˜ ์†์„ฑ๋“ค์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์ž‘์—… ์ˆ˜ํ–‰.

  • continue

๋ฐ˜๋ณต๋ฌธ ์ค‘์— ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋‹ค์Œ ๋ฐ˜๋ณต์„ ์‹คํ–‰.

  • break

๋ฐ˜๋ณต๋ฌธ์„ ๋น ์ ธ๋‚˜๊ฐ.

  • foreach
const superheroes = ['์•„์ด์–ธ๋งจ', '์บกํ‹ด ์•„๋ฉ”๋ฆฌ์นด', 'ํ† ๋ฅด', '๋‹ฅํ„ฐ ์ŠคํŠธ๋ ˆ์ธ์ง€'];
superheroes.forEach((hero) => {    console.log(hero);});
  • map
const array = [1, 2, 3, 4, 5, 6, 7, 8];
const square = (n) => n * n;const squared = array.map(square);
console.log(squared);
// ๋” ๊ฐ„๋žตํžˆconst array = [1, 2, 3, 4, 5, 6, 7, 8];const squared = array.map(n => n * n;);
console.log(squared);
  • indexOf
const superheroes = ['์•„์ด์–ธ๋งจ', '์บกํ‹ด ์•„๋ฉ”๋ฆฌ์นด', 'ํ† ๋ฅด', '๋‹ฅํ„ฐ ์ŠคํŠธ๋ ˆ์ธ์ง€'];const index = superheroes.indexOf('ํ† ๋ฅด');console.log(index);
  • findIndex
const todos = [    {        id: 1,        text: '์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ž…๋ฌธ',        done: true,    },    {        id: 2,        text: 'ํ•จ์ˆ˜ ๋ฐฐ์šฐ๊ธฐ',        done: true,    },    {        id: 3,        text: '๊ฐ์ฒด ๋ฐฐ์—ด ๋ฐฐ์šฐ๊ธฐ',        done: true,    },    {        id: 4,        text: '๋‚ด์žฅ ํ•จ์ˆ˜ ๋ฐฐ์šฐ๊ธฐ',        done: false,    },];
const index = todos.findIndex((todo) => todo.id === 3);console.log(index);
  • find

  • filter


ยท ์•ฝ 3๋ถ„

TIL#

TIL ์ž‘์„ฑ์— ๋„ˆ๋ฌด ๋ฌด๋ฆฌ๋ฅผ ํ•˜๋Š” ๋‚˜ ์ž์‹ ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” TIL์„ ์–ด๋–ค ์–ธ์–ด๋‚˜ ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ํ•œ ํ† ํ”ฝ ์ •๋„๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๊ฐœ๋…์œผ๋กœ ์ƒ๊ฐํ–ˆ์œผ๋‚˜, ์ด ์ƒ๊ฐ์€ ๋‹ค์Œ์˜ ์ž˜๋ชป๋œ ๊ณต๋ถ€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ด๋Œ์—ˆ๋‹ค.

  • ์‚ฌ์†Œํ•œ ๋ถ€๋ถ„ ๋˜๋Š” ํฌ๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๋””ํ…Œ์ผํ•œ ๋ถ€๋ถ„๊นŒ์ง€ ๋†“์น˜์ง€ ์•Š๊ณ  ์ •๋ฆฌํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ํ”ผ๋กœ๋„๋ฅผ ๋†’์˜€๋‹ค.

  • ๋‚ด ์ž์‹ ์˜ ์ƒ๊ฐ์ด๋‚˜ ๋Š๋‚Œ์ด ๋‹ด๊ฒจ์žˆ์ง€ ์•Š์•˜๋‹ค.


TIL ์žฌ์ •์˜#

์–ด๋Š ์ˆœ๊ฐ„ ๋„ˆ๋ฌด ์ •ํ™•ํ•œ ์ž๋ฃŒ๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ์• ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

TIL์€ ๋‚ด๊ฐ€ ๋‹ค์‹œ ๋ณด๊ณ  ์ดํ•ดํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด์ง€ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ์“ฐ๋Š” ๊ธ€์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋„ˆ๋ฌด ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•  ํ•„์š”๋„ ์—†๋‹ค.

(๋ˆ„๊ฐ€ ๋ณธ๋‹ค๊ณ  ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋ ค๊ณ  ์• ์ผ๋Š”์ง€..)

"TIL์€ ์˜ค๋Š˜ ๋ฐฐ์šด ๊ฒƒ์„ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ทธ์ € ๋‚  ๊ฒƒ์˜ ์ƒ๊ฐ์„ ๊ธฐ๋กํ•ด๋†“๋Š” ๊ฒƒ์ด๋‹ค." ๋ผ๊ณ  ์žฌ์ •์˜ํ•œ๋‹ค.

๊ทธ ์ดํ›„์— ๋‚  ๊ฒƒ์˜ ์ƒ๊ฐ์ด ์ข€ ๋” ์ •์ œ๋˜๋ฉด, ๋ธ”๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ๋‹ค๋ฃจ๊ฑฐ๋‚˜ TIL์— ์ฃผ์ œ ๋ณ„๋กœ๋ฌถ์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.


์ž๊ทน์ด ๋˜๋Š” TIL์˜ ์„ ๋ฐฐ๋‹˜๋“ค#

TIL์„ 1๋…„๋™์•ˆ ์ง„ํ–‰ํ•˜๋ฉฐ - ๋ฐ•์ค€์šฐ๋ธ”๋กœ๊ทธ

์ผ์ผ์ปค๋ฐ‹์˜ ํšจ์šฉ์„ฑ - jojoldu

์ผ์ผ์ปค๋ฐ‹(Daily Commit) - 100์ผ ํšŒ๊ณ  - ์ง„์œ ๋ฆผ

์ผ์ผ์ปค๋ฐ‹(Daily Commit) โ€“ 1๋…„ ํšŒ๊ณ  - ์ง„์œ ๋ฆผ

๋‚˜๋Š” ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœ ๊ณต๋ถ€๋ฅผ ํ–ˆ๋‚˜, 1ํŽธ - Jbee

๋‚˜๋Š” ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœ ๊ณต๋ถ€๋ฅผ ํ–ˆ๋‚˜, 2ํŽธ - Jbee

ยท ์•ฝ 12๋ถ„

0228#

ํ† ์ต์Šคํ”ผํ‚น#

"์กธ์—… ์š”๊ฑด" + "์ทจ์—…"

๋‘ ๊ฐ€์ง€ ๋ชฉ์ ์„ ์œ„ํ•ด ํ† ์ต์Šคํ”ผํ‚น ์‹œํ—˜์„ ์ค€๋น„ํ–ˆ๋‹ค.

์กธ์—… ์š”๊ฑด์€ Lv.5, ์ทจ์—…์—๋Š” ์ตœ์†Œ Lv.6๋ฅผ ์š”๊ตฌํ•˜๋Š” ํšŒ์‚ฌ๊ฐ€ ๋งŽ์•˜๋‹ค.

๋ชฉํ‘œ๋Š” ๋‚ด์‹ฌ Lv.7์„ ๊ธฐ๋Œ€ํ•˜๋ฉด์„œ Lv.6๋กœ ์žก์•˜๋‹ค. (์ง€๊ธˆ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ฐธ ์•ˆ์ผํ–ˆ๋˜ ๋ชฉํ‘œ์„ค์ •)

  • ๋…ํ•™ (์œ ํŠœ๋ธŒ)

  • ์ธํ„ฐ๋„ท ๊ฐ•์˜

  • ํ•™์›

3๊ฐ€์ง€ ์„ ํƒ์ง€๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ๋น ๋ฅธ ์‹œ๊ฐ„ ์•ˆ์— ์ ์ˆ˜๋ฅผ ์–ป๊ณ  ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— + ํ† ์ต์Šคํ”ผํ‚น์‹œํ—˜์˜ ์„ฑ๊ฒฉ์„ ์ „ํ˜€ ๋ชฐ๋ž๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ๋ƒฅ ํ•™์›์„ ๋‹ค๋‹ˆ๊ธฐ๋กœ ํ–ˆ๋‹ค.

์•ˆ์ผํ•œ ๋ชฉํ‘œ์™€ ์ˆ˜๋™์ ์œผ๋กœ ํ•™์›์— ์˜์กดํ•  ์ƒ๊ฐ์œผ๋กœ ์‹œ์ž‘ํ•ด์„œ ๊ทธ๋Ÿฐ์ง€ ํ•™์› ์ˆ˜์—…๊ณผ ์Šคํ„ฐ๋””์—์„œ๋Š” ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ•˜๊ณ , ๋”ฐ๋กœ ์‹œ๊ฐ„์„ ๋‚ด์„œ ๊ณต๋ถ€ํ•˜์ง€๋Š” ์•Š๊ฒŒ ๋˜์—ˆ๋‹ค. ์ง€๊ธˆ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ๋‹น์—ฐํ•œ ๊ฒฐ๊ณผ์˜€๋‹ค.

์ด๋ ‡๊ฒŒ ์˜ค์ „ ๊ต๋‚ด ๊ทผ๋กœ์™€ ์˜คํ›„ ํ•™์›์„ ๋ณ‘ํ–‰ํ•˜๋‹ˆ ( ์ง‘ -> ํ•™๊ต -> ๊ฐ•๋‚จ -> ์ง‘ ์˜ ์‚ด์ธ์ ์ธ ํ†ตํ•™ ์Šค์ผ€์ฅด..) 2์ฃผ๊ฐ€ ์ˆœ์‹๊ฐ„์— ์ง€๋‚˜๊ฐ”๊ณ , ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ•˜์ง€ ์•Š์€ ํƒ“์— ๋‹น์žฅ ์‹œํ—˜๋ณผ ์ž์‹ ์ด ์—†์–ด 1์ฃผ๊ฐ„ ์ถ”๊ฐ€๋กœ ๋…ํ•™์„ ํ–ˆ๋‹ค.

ํ† ์ต์Šคํ”ผํ‚น์€ ์Šคํ”ผํ‚น ์‹œํ—˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ ์†Œ๋ฆฌ๋‚ด์–ด์„œ ๊ณต๋ถ€ํ•ด์•ผํ–ˆ๊ณ , ๊ทธ๋ž˜์„œ ์ง‘์—์„œ๊ณต๋ถ€๋ฅผ ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ๋ฌธ์ œ ์˜ค๋””์˜ค ํŒŒ์ผ๋„ ์ง์ ‘ ์žฌ์ƒํ•ด์•ผํ•˜๊ณ , ์ง์ ‘ ์‹œ๊ฐ„์„ ์žฌ์•ผํ•˜๊ณ , ๋…น์Œ๊ธฐ๋„ ํ‚ค๋Š” ๋“ฑ ์ด๊ฒƒ์ €๊ฒƒ ์‹ ๊ฒฝ์“ฐ๋ฉด์„œ ๊ณต๋ถ€ํ•ด์•ผ ํ–ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์‹œํ—˜์žฅ์— ๊ฐ€๋‹ˆ ์Šคํ”ผํ‚นํ•˜๊ธฐ ์ข‹์€(?) ํ™˜๊ฒฝ์—์„œ ์–ด๋Š ์ •๋„์˜ ๊ธด์žฅ๊ฐ๊ณผ ํ•จ๊ป˜ ์‹œํ—˜์„ ์น˜๋ฃจ๋‹ˆ ์˜คํžˆ๋ ค ๋ชจ์˜๊ณ ์‚ฌ ํ’€ ๋•Œ๋ณด๋‹ค ์ง‘์ค‘๋˜๊ณ  ์ž˜ ๋ณธ ๋Š๋‚Œ์ด์—ˆ๋‹ค.

๋ฐ˜์„ฑ#

๊ฒฐ๊ณผ๋Š” Lv.6. ์•„๋ฌดํŠผ ํ•„์š”ํ•œ ์š”๊ตฌ์กฐ๊ฑด์€ ๋งŒ์กฑ์‹œ์ผฐ์ง€๋งŒ ๋‚˜๋ฆ„ Lv.7์„ ๋ฐ”๋ž˜์„œ ๊ทธ๋Ÿฐ์ง€ ์กฐ๊ธˆ ์‹ค๋ง์Šค๋Ÿฌ์› ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฐ๊ตญ ์•ˆ์ผํ•˜๊ฒŒ ์ƒˆ์šด ๋ชฉํ‘œ์— ๋‹น์—ฐํ•œ ๊ฒฐ๊ณผ์˜€๋˜ ๊ฒƒ ๊ฐ™๊ณ , ์‹œํ—˜์„ ์ž˜ ๋ด์•ผํ•˜๋Š” ์ด์œ  ์ž์ฒด๊ฐ€ ๋ถˆ๋ถ„๋ช…ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

์•„๋ฌดํŠผ ์—ฌ๊ธฐ๊นŒ์ง€ TIL์„ 3์ฃผ๊ฐ„ ๊ฒŒ์„๋ฆฌํ•œ ๋ณ€๋ช…์ด๋‹ค.

JavaScript#

๋“œ๋””์–ด HTML, CSS๋ฅผ ๋๋‚ด๊ณ  JavaScript๋กœ ๋„˜์–ด์™”๋‹ค. Markup Language๋งŒ ํ•˜๋‹ค๊ฐ€ ์˜ค๋žœ๋งŒ์— ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ˆ ์˜คํžˆ๋ ค ์žฌ๋ฏธ์žˆ์—ˆ๋‹ค. HTML, CSS๋Š” ์†์„ฑ ์—ญํ• ์„ ์ˆ™์ง€ํ•˜๊ณ , ์‚ฌ์šฉ๋ฒ•์„ ์ตํžˆ๋Š” ์ˆ˜์ค€์ด๋ผ ํฅ๋ฏธ๊ฐ€ ๋–จ์–ด์กŒ๊ณ , JS๋ฅผ ๋‹ค๋ฃฐ ์ค„ ์•Œ์•„์•ผ ์˜๋ฏธ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•ด๋ณผ ์ˆ˜ ์žˆ๊ฒ ๋‹ค ์‹ถ์–ด JS๋ฅผ ๋นจ๋ฆฌ ๊ณต๋ถ€ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๊ธฐ์ดˆ์ ์ธ ๋ฌธ๋ฒ•#

ํ”„๋ก ํŠธ์—”๋“œ ์›น๊ฐœ๋ฐœ ํŒจํ‚ค์ง€ ๊ฐ•์ขŒ๋ฅผ ํ†ตํ•ด ๊ธฐ์ดˆ์ ์ธ JS ๋ฌธ๋ฒ•์„ ๋ฐฐ์› ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ์œ ์‚ฌํ•œ ๋ถ€๋ถ„์€ ์ง€๋‚˜๊ฐ€๊ณ , ์œ ์˜ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ๋ฐœ๊ฒฌํ•œ ๋ถ€๋ถ„๋งŒ ์ •๋ฆฌํ•œ๋‹ค.

MISC#

  • CodeSandbox : javascript๋ฅผ ํ•™์Šตํ•˜๊ธฐ ์ข‹์€ ide

  • ์Œ๋”ฐ์˜ดํ‘œ " ์™€ ๋”ฐ์˜ดํ‘œ ' ๋Š” ๋‘˜ ์ค‘ ์•„๋ฌด๊ฑฐ๋‚˜ ๊ฐ€๋Šฅ. (CodeSandbox์—์„œ๋Š” .prettierrc ์—์„œ ์„ค์ •์„ ํ†ตํ•ด cmd + s ํ•  ๋•Œ ๋”ฐ์˜ดํ‘œ์™€ ์Œ๋”ฐ์˜ดํ‘œ ์ค‘ ์„ ํƒํ•œ๊ฒƒ์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ค€๋‹ค.)

  • ; ๋Š” ์ƒ๋žต ๊ฐ€๋Šฅ. ํ•˜์ง€๋งŒ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ ๊ถŒ์žฅ.

๋ณ€์ˆ˜์™€ ์ƒ์ˆ˜#

JS์—์„œ๋Š” ๋ณ€์ˆ˜, ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ type ๋ณ„๋กœ ์„ ์–ธํ•˜์ง€ ์•Š๊ณ  let , const , ๊ทธ๋ฆฌ๊ณ  var ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • let ์€ ๋ณ€์ˆ˜, ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋ฅผ ๋˜ ๋‹ค์‹œ ์„ ์–ธํ•  ์ˆ˜ ์—†๋‹ค.

  • const ๋Š” ์ƒ์ˆ˜, ํ•œ๋ฒˆ ์„ค์ •ํ•˜๋ฉด ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. immutable

  • var ์—ญ์‹œ ๋ณ€์ˆ˜. ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋ฅผ ๋˜ ๋‹ค์‹œ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.

var ๋Š” ํ˜„์žฌ ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜.IE9, IE10 ๋“ฑ์˜ ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” let , const ๊ฐ€ ์—†์–ด์„œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ํ•˜๋‹ค.ํ•˜์ง€๋งŒ Babel ์ด๋ผ๋Š” ๋„๊ตฌ๋ฅผ ํ†ตํ•ด JS ์ฝ”๋“œ๊ฐ€ ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋Œ์•„๊ฐ€๋„๋ก ํ˜ธํ™˜ํ•ด์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— var ๋ฅผ ์™„์ „ํžˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ฐœ๋ฐœํ•˜๋Š”๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด ์™ธ์—๋„ var , let , const ๋Š” scope ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

  • var ๋Š” function-scoped

  • let , const ๋Š” block-scoped

์ด๋Š” hoisting , IIFE ์™€ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š”๋ฐ, ์ •๋ฆฌ๋œ ๋งํฌ๊ฐ€ ์žˆ์–ด์„œ ๋งํฌ๋กœ ์ฒจ๋ถ€ ๋‚˜์ค‘์— ๋‹ค์‹œ ๋ณด๊ณ  ๊ณต๋ถ€ํ•˜์ž.

๐Ÿ”— var, let, const ์ฐจ์ด์ ์€?

Null, undefined#

null : ์—†๋Š” ๊ฒƒ.

undefined : ๊ฐ’์ด ์•„์ง ์„ค์ •๋˜์ง€ ์•Š์Œ

var variable;console.log(variable); // undefined

๋น„๊ต ์—ฐ์‚ฐ์ž#

๋‹ค๋ฅธ PL๊ณผ ๋‹ฌ๋ฆฌ == , === ๋‘ ๊ฐ€์ง€์˜ ์ผ์น˜์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ๋Š”๋ฐ,

== : ํƒ€์ž…์„ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š์Œ (์ˆซ์ž 2์™€ ๋ฌธ์ž '2'๊ฐ€ ๋™์ผ)

=== : ํƒ€์ž…์„ ๊ฒ€์‚ฌํ•จ.

ํ•จ์ˆ˜#

ํ•จ์ˆ˜๋Š” ์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋‚ด์šฉ์ด๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ค„๋ณธ ์ ์ด ์žˆ์ง€๋งŒ, ํ•จ์ˆ˜์˜ ์ •์˜๋ฅผ ๋‹ค์‹œ ์‚ดํŽด๋ณธ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ, ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ์™ธ๋ถ€ (๋˜๋Š” ์žฌ๊ท€(recursion)์˜ ๊ฒฝ์šฐ์—” ๋‚ด๋ถ€) ์ฝ”๋“œ์— ์˜ํ•ดํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ๋Š” "ํ•˜์œ„ํ”„๋กœ๊ทธ๋žจ"์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ๊ทธ ์ž์ฒด์ฒ˜๋Ÿผ, ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ๋ชธํ†ต (function body)์ด๋ผ๊ณ  ํ•˜๋Š” ์ผ๋ จ์˜ ๊ตฌ๋ฌธ(statement)์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ฐ’์€ ํ•จ์ˆ˜์—์ „๋‹ฌ๋  ์ˆ˜ ์žˆ๊ณ  ํ•จ์ˆ˜๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. - MDN web docs - ํ•จ์ˆ˜

JavaScript์—์„œ์˜ ํ•จ์ˆ˜์˜ ํŠน์ง•์€ ์ด๋ ‡๋‹ค๊ณ  ํ•œ๋‹ค.

JavaScript์—์„œ, ํ•จ์ˆ˜๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์ฒ˜๋Ÿผ ์†์„ฑ ๋ฐ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ์— ์ผ๊ธ‰ (first-class) ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ํ•จ์ˆ˜๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š” ๊ฒƒ์€ ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด, ํ•จ์ˆ˜๋Š” Function ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. - MDN web docs - ํ•จ์ˆ˜

ํ•จ์ˆ˜๋Š” ๋ฐ˜ํ™˜ ๊ฐ’์„ ์ง€์ •ํ•˜๋Š” return ๋ฌธ์ด ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ, return ๋ฌธ์ด ์—†๋‹ค๋ฉด ํ•จ์ˆ˜๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ธฐ๋ณธ ๋ฐ˜ํ™˜๊ฐ’์€ undefined ์ด๋‹ค.

ํ•จ์ˆ˜ ์ •์˜#

ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ.

  • ํ•จ์ˆ˜ ์„ ์–ธ

  • ํ•จ์ˆ˜ ํ‘œํ˜„์‹(expression)

  • Function ์ƒ์„ฑ์ž

๋จผ์ € ํ•จ์ˆ˜ ์„ ์–ธ์€ ์ด๋ ‡๋‹ค.

function name([param[, param[, ... param]]]) {   statements}

ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•œ ์ดํ›„์— ์ด๋ฆ„์œผ๋กœ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— name ์ด ํ•„์ˆ˜์ ์ด๊ณ , param ์€ ํ•จ์ˆ˜์— ์ „๋‹ฌ๋˜๋Š” ์ธ์ˆ˜์˜ ์ด๋ฆ„์œผ๋กœ 255๊ฐœ๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค. statements ๋Š” ํ•จ์ˆ˜์˜ ๋ชธํ†ต์„ ๊ตฌ์„ฑํ•œ๋‹ค.

๋‹ค์Œ์œผ๋กœ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์ด๋‹ค.

ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ํ•จ์ˆ˜ ์„ ์–ธ๊ณผ ๋น„์Šทํ•˜๊ณ  ๊ตฌ๋ฌธ์ด ๊ฐ™์€๋ฐ, ์ฐจ์ด์ ์€ ๋ณ€์ˆ˜์— ํ•จ์ˆ˜๋ฅผ ํ• ๋‹นํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

var myFunction = function [name]([param[, param[, ... param]]]) {   statements}

์ด ๋•Œ๋Š” name ์„ ์ƒ๋žตํ•˜๊ณ , ์ต๋ช…(anonymous) ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , name ์„ ๋„ฃ์–ด์„œ named ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์ต๋ช… ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉํ•  ๋•Œ ๋ณ€์ˆ˜๋ช…(์œ„์—์„  myFunction )์„ ํ•จ์ˆ˜์˜ ์ด๋ฆ„์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉด ์•ˆ๋˜๋Š”๋ฐ, ํ•จ์ˆ˜์˜ ์ฐธ์กฐ๊ฐ’์ด myFunction ์ด๋ผ๋Š” ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฒƒ์ด๋‹ค.

์–ด๋””๊นŒ์ง€๋‚˜ '์ต๋ช…' ํ•จ์ˆ˜์ด๊ณ , ํ•จ์ˆ˜ ๋ณ€์ˆ˜์ธ myFunction ์„ ํ†ตํ•ด ํ˜ธ์ถœ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋˜ํ•œ named ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ์— ํ•จ์ˆ˜ ๋ณ€์ˆ˜์ธ myFunction ์œผ๋กœ ์™ธ๋ถ€์—์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•จ์ˆ˜ ์ด๋ฆ„ name ์œผ๋กœ๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ณ  ์™ธ๋ถ€์—์„œ๋Š” ํ˜ธ์ถœํ•  ์ˆ˜์—†๋‹ค.

Function ์ƒ์„ฑ์ž๋Š” ์ž˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  ๊ถŒ์žฅ๋˜์ง€๋„ ์•Š๋Š” ๋ฐฉ์‹์ธ๋ฐ, ๊ตณ์ด ์•Œ์•„๋ณด์ž๋ฉด,

var myFunction = new Function(arg1, arg2, ...argN, functionBody);
var myFunction = new Function('a', 'b', 'console.log(a+b)');myFunction(1, 3); // 4

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

ํ•จ์ˆ˜ ์„ ์–ธ๊ณผ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์˜ ์ค‘์š”ํ•œ ์ฐจ์ด๋Š” ํ˜ธ์ด์ŠคํŒ…(hoisting)์ด๋‹ค. ํ•œ๊ตญ์–ด๋กœ๋Š” '๋Œ์–ด์˜ฌ๋ฆผ'์„ ๋œปํ•œ๋‹ค.

์ธํ„ฐํ”„๋ฆฐํ„ฐ๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•จ์— ์žˆ์–ด์„œ Global ์˜์—ญ์˜ ์„ ์–ธ๋œ ์ฝ”๋“œ๋ธ”๋Ÿญ์„ ์ตœ์ƒ์˜ Scope๋กœ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ํ˜ธ์ด์ŠคํŒ…์ด๋ผ ํ•œ๋‹ค. - Function Declarations(ํ•จ์ˆ˜์„ ์–ธ) vs Function Expressions(ํ•จ์ˆ˜ํ‘œํ˜„)์—์„œ

๋‹จ์ˆœํ•˜๊ฒŒ ์ƒ๊ฐํ•ด์„œ ์„ ์–ธ๋ฌธ์€ ํ•ญ์ƒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„ ๊ตฌ๋™์‹œ ์ตœ์šฐ์„ ์ ์œผ๋กœ ํ•ด์„๋œ๋‹ค. ํ•˜์ง€๋งŒ ํ• ๋‹น์€ hoisting์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.

// ์˜ˆ์ œ 1 : ํ•จ์ˆ˜์„ ์–ธ์—์„œ์˜ ํ˜ธ์ด์ŠคํŒ…foo();function foo() {    console.log('hello');};> hello
// ์˜ˆ์ œ 2 : ํ•จ์ˆ˜ํ‘œํ˜„์—์„œ์˜ ํ˜ธ์ด์ŠคํŒ…bar();var bar = function() {    console.log('hello');};> TypeError: bar is not a function

์˜ˆ์ œ ์ถœ์ฒ˜ : Function Declarations(ํ•จ์ˆ˜์„ ์–ธ) vs Function Expressions(ํ•จ์ˆ˜ํ‘œํ˜„)

์˜ˆ์ œ1์ฒ˜๋Ÿผ ํ•จ์ˆ˜ ์„ ์–ธ์˜ ๊ฒฝ์šฐ๋Š” ์„ ์–ธ๋ฌธ์ด hoisting ๋˜์–ด ์ตœ์ƒ์˜ scope๋กœ ๋Œ์–ด์˜ฌ๋ ค์กŒ๊ธฐ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ์ด๋ฆ„์ธ foo(); ๋กœ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•˜์ง€๋งŒ ์˜ˆ์ œ 2์˜ ๊ฒฝ์šฐ๋Š” ํ•จ์ˆ˜ ํ‘œํ˜„์œผ๋กœ ๋˜์–ด์žˆ๊ณ , ๋”ฐ๋ผ์„œ hoisting๋˜๋Š” ๋ถ€๋ถ„์€ ์„ ์–ธ๋ถ€๋ถ„์ธ var bar; ๋ฟ์ด๋‹ค. ๋”ฐ๋ผ์„œ bar(); ๋กœ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ๋Š” bar ๋Š” ๋‹จ์ง€ ๋ณ€์ˆ˜์ผ๋ฟ์ด๋ผ์„œ TypeError: bar is not a function ์˜ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ด์™ธ์— IIFE , Closure ๋“ฑ์˜ ๊ฐœ๋…์ด ์—ฐ๊ด€๋œ ๊ฒƒ๊นŒ์ง€ ํ™•์ธํ•˜์˜€๋Š”๋ฐ, ์ด๋Š” ๋‹ค์Œ์— ์•Œ์•„๋ณด๋Š” ๊ฒƒ์œผ๋กœ ๋งˆ์นœ๋‹ค.

Reference#

๐Ÿ”— MDN web docs - ํ•จ์ˆ˜

๐Ÿ”— Function Declarations(ํ•จ์ˆ˜์„ ์–ธ) vs Function Expressions(ํ•จ์ˆ˜ํ‘œํ˜„)

๐Ÿ”— ํ•จ์ˆ˜ ํ‘œํ˜„์‹ vs ํ•จ์ˆ˜ ์„ ์–ธ์‹

๐Ÿ”— Javascript IIFE ์ดํ•ดํ•˜๊ธฐ

๐Ÿ”— var, let, const ์ฐจ์ด์ ์€?

๐Ÿ”— [JS] ํ•จ์ˆ˜ ์ƒ์„ฑ ๋ฐฉ๋ฒ•: ํ•จ์ˆ˜ ํ‘œํ˜„์‹, ํ•จ์ˆ˜ ์„ ์–ธ, Hoisting


ยท ์•ฝ 5๋ถ„

Java๋ฅผ ์„ค์น˜ํ•˜๋ ค๋Š”๋ฐ...#

์ปดํ“จํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ Java๋ฅผ ๋‹ค์‹œ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค.

๐Ÿ”— Java SE ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€


2020-01-13-์ž๋ฐ”-์†Œํ”„ํŠธ์›จ์–ด-jvm-jre-jdk-image-0


2020-01-13-์ž๋ฐ”-์†Œํ”„ํŠธ์›จ์–ด-jvm-jre-jdk-image-1

์™ผ์ชฝ์€ ํ˜„์žฌ ๊ฐ€์žฅ ์ตœ์‹  ๋ฒ„์ „์ธ ๋“ฏํ•œ 13.0.1์ด๊ณ , ์˜ค๋ฅธ์ชฝ์€ ๋ณดํŽธ์ ์œผ๋กœ ๋งŽ์ด ์“ฐ์ธ๋‹ค๊ณ ํ•˜๋Š” 8๋ฒ„์ „์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์™œ ํ‘œ๊ธฐ๋ฒ•์ด ํ•˜๋‚˜๋Š” 13.0.1์ด๊ณ , ํ•˜๋‚˜๋Š” 8u231์ธ๊ฐ€?


์ž๋ฐ” ๋ฒ„์ „ ํ‘œ๊ธฐ๋ฒ•#


๐Ÿ’ก Java SE 13. 0. 1 (LTS)

SE : Standard Edition 13. : ์ฃผ ๋ฒ„์ „ 0. : ๊ฐœ์„  ๋ฒ„์ „ 1 : ์—…๋ฐ์ดํŠธ ๋ฒ„์ „ (LTS) : ์žฅ๊ธฐ ์ง€์› ์„œ๋น„์Šค(Long Term Support)๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋ฒ„์ „

์œ„๋Š” ์ž๋ฐ” ๋ฒ„์ „์„ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Java SE 13.0.1 (LTS)์€ ์ฃผ ๋ฒ„์ „์ด 13์ด๊ณ , ์ˆ˜์ •์ด 1๋ฒˆ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Java 8๋ฒ„์ „๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์˜ Java SE 8u231์€ ์ฃผ ๋ฒ„์ „์ด 8์ด๊ณ , ์ˆ˜์ •์ด 231๋ฒˆ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. (๋„ˆ๋ฌด ๋งŽ์•„์„œ ์ด๋ ‡๊ฒŒ ํ‘œ๊ธฐํ–ˆ๋‚˜)

๋˜ํ•œ ๊ทธ๋ƒฅ Java 8, Java 13 ๋ฒ„์ „์ด๋ผ๊ณ  ํŽธํ•˜๊ฒŒ ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Java SE 13์„ ์„ค์น˜ํ•œ๋‹ค๋Š” ๊ฒƒ์€ JDK 13์„ ์„ค์น˜ํ•œ๋‹ค๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์˜๋ฏธ์ด๋‹ค.

8๋ฒ„์ „์˜ ๊ฒฝ์šฐ JDK 1.8์ด๋ผ๊ณ  ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

2020-01-13-์ž๋ฐ”-์†Œํ”„ํŠธ์›จ์–ด-jvm-jre-jdk-image-2

๊ทผ๋ฐ JDK๊ฐ€ ๋ฌด์Šจ ๋œป์ธ๊ฐ€?


JDK๊ฐ€ ๋ญ”๋ฐ?#


JDK๋Š” ์ž๋ฐ” ๊ฐœ๋ฐœ ๋„๊ตฌ(Java Development Kit)์˜ ์•ฝ์ž์ด๋‹ค.

JDK๋Š” Java๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ์ธ JRE์™€ ํ•จ๊ป˜ + ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋„๊ตฌ(javac, java ๋“ฑ)๋“ค์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ์ด๋ฅธ๋ฐ” Java Platform์ด๋‹ค.

Java๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ JDK๋กœ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค!

๊ทธ๋Ÿผ JRE๋Š”?


JRE๋Š” ๋ญ”๋ฐ?#


JRE๋Š” ์ž๋ฐ” ์‹คํ–‰ํ™˜๊ฒฝ(Java Runtime Environment)์˜ ์•ฝ์ž์ด๋‹ค.

JRE๋Š” JVM ์ด ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ๋™์ž‘์‹œํ‚ฌ ๋•Œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ๋“ค๊ณผ ๊ธฐํƒ€ ํŒŒ์ผ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. JRE๋Š” JVM์˜ ์‹คํ–‰ํ™˜๊ฒฝ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

์š”์•ฝํ•˜๋ฉด JVM + ๋Ÿฐํƒ€์ž„์— ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ํŒŒ์ผ๋“ค(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)

๊ทธ๋Ÿผ JVM์€?


JVM์€ ๋ญ”๋ฐ?#


JVM์€ ์ž๋ฐ” ๊ฐ€์ƒ๋จธ์‹ (Java Virtual Machine)์˜ ์•ฝ์ž์ด๋‹ค.

JVM์€ ์ž๋ฐ” ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ(.class)์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ JVM์€ ํ”Œ๋žซํผ์— ์˜์กด์ ์ด๋‹ค. ์ฆ‰ ๋ฆฌ๋ˆ…์Šค์˜ JVM๊ณผ ์œˆ๋„์šฐ์ฆˆ์˜ JVM์€ ๋‹ค๋ฅด๋‹ค. ๋‹จ, ์ปดํŒŒ์ผ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋Š” ์–ด๋–ค JVM์—์„œ๋„ ๋™์ž‘์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

JVM์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค.

  • ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  (Loads code)

  • ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  (Verifies code)

  • ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  (Executes code)

  • ์‹คํ–‰ํ™˜๊ฒฝ(Runtime Environment)์˜ ๊ทœ๊ฒฉ์„ ์ œ๊ณตํ•œ๋‹ค. (Provides runtime environment)

๐Ÿ’ก ์–ด๋– ํ•œ ์žฅ๋น„์—์„œ๋“ ์ง€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋ณธ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ด ์ค€๋‹ค.


๊ทธ๋ฆผ์œผ๋กœ ์ •๋ฆฌ#


2020-01-13-์ž๋ฐ”-์†Œํ”„ํŠธ์›จ์–ด-jvm-jre-jdk-image-3

๊ทธ๋ฆผ์œผ๋กœ ์š”์•ฝํ•˜์ž๋ฉด ์ด๋Ÿฌํ•˜๋‹ค.


Reference#

๐Ÿ”—[ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ์ž๋ฐ”] Java 8/11 ๋‹ค์šด๋กœ๋“œ & ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ(JDK)

๐Ÿ”—[์ ํ”„ ํˆฌ ์ž๋ฐ”] JVM, JRE, JDK์˜ ์ฐจ์ด

๐Ÿ”—์ž๋ฐ” ์†Œํ”„ํŠธ์›จ์–ด(JRE, JDK, Server-JRE) ์ฐจ์ด

๐Ÿ”—[JAVA ์ž๋ฐ”] JDK, JRE, JVM ์ฐจ์ด

๐Ÿ”—JDK, JRE, ๊ทธ๋ฆฌ๊ณ  JVM์˜ ์ฐจ์ด

2020-01-13-์ž๋ฐ”-์†Œํ”„ํŠธ์›จ์–ด-jvm-jre-jdk-image-4

ํƒœ๊ทธ: