[ JavaScript ๋ฌธ๋ฒ• ์ข…ํ•ฉ๋ฐ˜ 1์ฃผ์ฐจ (1-8) ]

2023. 7. 25. 14:54ใ†2. JS๋ฌธ๋ฒ• ์ข…ํ•ฉ

  • 1-1๊ฐ•  JS์˜ ์—ญ์‚ฌ

1995๋…„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํƒ„์ƒ :  ๋„ท์Šค์ผ€์ดํ”„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜(LiveScript Javascript)

2005๋…„ AJAX ๋“ฑ์žฅ (js๊ธฐ๋ฐ˜) javascript ์‚ฌ์šฉ์ž๊ฐ€ ๋Š˜์–ด๋‚˜๊ฒŒ๋จ.

         - as is : ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์›นํŽ˜์ด์ง€ ์ „์ฒด๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ

         - to be : ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹นํ•˜๋Š” ์˜์—ญ๋งŒ ์ƒˆ๋กœ๊ณ ์นจ

       -> UXํ–ฅ์ƒ์œผ๋กœ javascript ์‚ฌ์šฉ์ž ์ฆ๊ฐ€

2009๋…„ Node.js ๋“ฑ์žฅ, ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํ™œ์„ฑํ™”

         -  ํ•˜๋‚˜์˜ ์–ธ์–ด → FrontEnd + BackEnd + DB(MongoDB) = FullStack

 


 

  • 1-2๊ฐ•  ๋ณ€์ˆ˜์™€์ƒ์ˆ˜
๋ณ€์ˆ˜๋ž€? 
๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ณ , ์ €์žฅ๋œ ๊ฐ’์„ ์ฝ์–ด ๋“ค์—ฌ ์žฌ์‚ฌ์šฉ ํ•˜๊ธฐ ์œ„ํ•œ ๋งค์ปค๋‹ˆ์ฆ˜.

 

  • [ ๋ณ€์ˆ˜์˜ 5๊ฐ€์ง€ ์ฃผ์š”๊ฐœ๋… ] 
  • ๋ณ€์ˆ˜ ์ด๋ฆ„ : ์ €์žฅ๋œ ๊ฐ’์˜ ๊ณ ์œ  ์ด๋ฆ„
  • ๋ณ€์ˆ˜ ๊ฐ’ : ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’
  • ๋ณ€์ˆ˜ ํ• ๋‹น : ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ํ–‰์œ„
  • ๋ณ€์ˆ˜ ์„ ์–ธ :  ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ปดํ“จํ„ฐ์— ์•Œ๋ฆฌ๋Š” ํ–‰์œ„
  • ๋ณ€์ˆ˜ ์ฐธ์กฐ :  ๋ณ€์ˆ˜์— ํ• ๋‹น๋œ ๊ฐ’์„ ์ฝ์–ด์˜ค๋Š”๊ฒƒ

* ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ณ€์ˆ˜๋Š” var, let, const ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// var๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ
var myVar = "Hello World";
console.log(myVar); // "Hello World"

// let์œผ๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ
let myLet = "Hello World";
console.log(myLet); // "Hello World"

// const๋กœ ์ƒ์ˆ˜ ์„ ์–ธ
const myConst = "Hello World";
console.log(myConst); // "Hello World"

 

var : ์„ ์–ธํ•œ๊ฒƒ๋„ ํ•œ๋ฒˆ๋” ์„ ์–ธ๊ฐ€๋Šฅ (๋งˆ์ง€๋ง‰ ์„ ์–ธํ•œ ๊ฐ’์œผ๋กœ ๋ณ€์ˆ˜๊ฐ€ ๋ฎ์–ด์”Œ์›Œ์ง„๋‹ค.)

var / let : ๋‹ค๋ฅธ๊ฐ’์„ ํ• ๋‹นํ•˜๋”๋ผ๋„ ์žฌํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

// var๋กœ ๋ณ€์ˆ˜ ๋ฎ์–ด์“ฐ๊ธฐ
var myVar = "Hello";
var myVar = "World";
console.log(myVar); // "World"

// let์œผ๋กœ ๋ณ€์ˆ˜ ๋ฎ์–ด์“ฐ๊ธฐ
let myLet = "Hello";
myLet = "World"; // ๊ธฐ์กด ๊ฐ’์„ ๋ฎ์–ด์“ฐ๊ธฐ
console.log(myLet); // "World"

// const๋กœ ์ƒ์ˆ˜ ์„ ์–ธ ํ›„ ๊ฐ’ ๋ณ€๊ฒฝํ•˜๊ธฐ
const myConst = "Hello";
myConst = "World"; // ์˜ค๋ฅ˜ ๋ฐœ์ƒ
console.log(myConst);

 


 

  • 1-3(4๊ฐ•) ๋ฐ์ดํ„ฐ ํƒ€์ž…

Runtime (runํ•˜๋Š” time) ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋–„๊ฐ€ ์•„๋‹Œ, ์‹ค์ œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ : ํ„ฐ๋ฏธ๋„ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋–„ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๊ฒฐ์ •๋˜๋Š”๊ฒƒ์„ ๋งํ•จ.

 

[1] ๋ฐ์ดํ„ฐํƒ€์ž…

1) ์ˆซ์ž(Number)

a. ์ •์ˆ˜ํ˜• ์ˆซ์ž(Integer)

let num1 = 10;
console.log(num1); // 10
console.log(typeof num1); // "number"

b. ์‹ค์ˆ˜ํ˜• ์ˆซ์ž(Float)

let num2 = 3.14;
console.log(num2); // 3.14
console.log(typeof num2); // "number"

c. ์ง€์ˆ˜ํ˜• ์ˆซ์ž(Exponential)

let num3 = 2.5e5; // 2.5 x 10^5
console.log(num3); // 250000
console.log(typeof num3); // "number"

d. NaN(Not a Number) : ์ˆซ์ž๊ฐ€ ์•„๋‹Œ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๊ณ  ํ• ๋–„

let num4 = "Hello" / 2;
console.log(num4); // NaN
console.log(typeof num4); // "number"

e. Infinity 

let num5 = 1 / 0;
console.log(num5); // Infinity
console.log(typeof num5); // "number"

let num6 = -1 / 0;
console.log(num6); // -Infinity
console.log(typeof num6); // "number"

2) ๋ฌธ์ž์—ด(String) : ์ž‘์€ ๋”ฐ์˜ดํ‘œ(')๋‚˜ ํฐ ๋”ฐ์˜ดํ‘œ(")๋กœ ๊ฐ์‹ธ์„œ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

let name = 'Alice';
let message = "Hello, world!";

(1) ๋ฌธ์ž์—ด ๊ธธ์ด(length) ํ™•์ธํ•˜๊ธฐ

let str = "Hello, world!";
console.log(str.length); // 13

(2) ๋ฌธ์ž์—ด ๊ฒฐํ•ฉ(concatenation)

let str1 = "Hello, ";
let str2 = "world!";
let result = str1.concat(str2);
console.log(result); // "Hello, world!"

(3) ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ(substr, slice) 

let str = "Hello, world!";
console.log(str.substr(7, 5)); // "world" -> substr : from , length
console.log(str.slice(7, 12)); // "world" -> slice :  start , undfined

 (4) ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰(search)

let str = "Hello, world!";
console.log(str.search("world")); // 7

(5) ๋ฌธ์ž์—ด ๋Œ€์ฒด(replace)

let str = "Hello, world!";
let result = str.replace("world", "JavaScript");
console.log(result); // "Hello, JavaScript!"

(6) ๋ฌธ์ž์—ด ๋ถ„ํ• (split)

let str = "apple, banana, kiwi";
let result = str.split(","); // -> ๊ด„ํ˜ธ ์•ˆ์— ์ž๋ฅด๋Š” ๊ธฐ์ค€์„ ๋„ฃ์–ด์ค€๋‹ค.
console.log(result); // ["apple", " banana", " kiwi"]

3) ๋ถˆ๋ฆฌ์–ธ(Boolean) ์ฐธ(true)๊ณผ ๊ฑฐ์ง“(false)์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…

let bool1 = true;
console.log(bool1); // true
console.log(typeof bool1); // "boolean"

let bool2 = false;
console.log(bool2); // false
console.log(typeof bool2); // "boolean"

* ๋ถˆ๋ฆฌ์–ธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ์กฐ๊ฑด๋ฌธ(if, else, switch ๋“ฑ)๊ณผ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž(&&, ||, !)์™€ ํ•จ๊ป˜ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

4)undefined : ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜

let x;
console.log(x); // undefined

5) null : null์€ ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์Œ(๋ช…์‹œ์ ์œผ๋กœ, ์ผ๋ถ€๋Ÿฌํ‘œ๊ธฐํ•˜์ง€์•Š์Œ)์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. undefined์™€๋Š” ๋‹ค๋ฆ„

let y = null;

6) ๊ฐ์ฒด(Object) :  ์ค‘๊ด„ํ˜ธ({})๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ (key - value pair)

let person = { name: 'Alice', age: 20 };// key์—๋Š” ' ' ์™€๊ฐ™์€ ๋”ฐ์˜ดํ‘œ ์—†์ด ๋ฌธ์žํ˜•ํƒœ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ๋œ๋‹ค.
person.name // 'Alice'
person.age // 20

7) ๋ฐฐ์—ด(Array) : ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ๋Œ€๊ด„ํ˜ธ([])๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

let person = { name: 'Alice', age: 20 };
person.name // 'Alice'
person.age // 20

 


 

  • 1-5๊ฐ• ํ˜• ๋ณ€ํ™˜

(1) ์•”์‹œ์  ํ˜• ๋ณ€ํ™˜(implicit coercion) : ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ํ˜• ๋ณ€ํ™˜์ด๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 1) ๋ฌธ์ž์—ด ๋ณ€ํ™˜ : {}, null, undifined + "1" => ๋ฌธ์ž์—ด

console.log(1 + "2");   // "12"
console.log("1" + true);   // "1true"
console.log("1" + {});   // "1[object Object]"
console.log("1" + null);   // "1null"
console.log("1" + undefined);   // "1undefined"
// ๋ฌธ์ž์—ด๊ณผ ๋‹ค๋ฅธ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๋งŒ๋‚˜๋ฉด ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

2) ์ˆซ์ž ๋ณ€ํ™˜

console.log(1 - "2");   // -1
console.log("2" * "3");   // 6
console.log(4 + +"5");   // 9
// ๋”ํ•˜๊ธฐ ์—ฐ์‚ฐ์ž๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์—ฐ์‚ฐ์ž๋Š” ์ˆซ์ž๋ณ€ํ™˜์ด ์šฐ์„ ์‹œ ๋œ๋‹ค. 
// ์ด๋•Œ, ๋นˆ ๋ฌธ์ž์—ด("")์ด๋‚˜ ๊ณต๋ฐฑ ๋ฌธ์ž์—ด(" ")์€ 0์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

3) ๋ธ”๋ฆฌ์–ธ ๋ณ€ํ™˜ :Boolean() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ. ์ด๋•Œ, 0, ๋นˆ ๋ฌธ์ž์—ด(""), null, undefined, NaN์€ false๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ ์™ธ์˜ ๊ฐ’์€ true๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

console.log(Boolean(0));   // false
console.log(Boolean(""));   // false
console.log(Boolean(null));   // false
console.log(Boolean(undefined));   // false
console.log(Boolean(NaN));   // false
console.log(Boolean("false"));   // true
console.log(Boolean({}));   // true

(2) ๋ช…์‹œ์  ํ˜• ๋ณ€ํ™˜(explicit coercion) : ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ž๋ฃŒํ˜•์„ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

1) ๋ฌธ์ž์—ด ๋ณ€ํ™˜ : String() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ 

console.log(String(123));       // "123"
console.log(String(true));      // "true"
console.log(String(false));     // "false"
console.log(String(null));      // "null"
console.log(String(undefined)); // "undefined"
console.log(String({}));        // "[object Object]"

2) ์ˆซ์ž ๋ณ€ํ™˜ 

console.log(Number("123"));   // 123
console.log(Number(""));      // 0
console.log(Number("  "));    // 0
console.log(Number(true));    // 1
console.log(Number(false));   // 0

 


 

  • 1-6๊ฐ• ์—ฐ์‚ฐ์ž

(1) ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž(arithmetic operators)

 1) ๋”ํ•˜๊ธฐ ์—ฐ์‚ฐ์ž(+)

console.log(2 + 3);       // 5
console.log("2" + "3");   // "23"
console.log("2" + 3);     // "23"
console.log(2 + "3");     // "23"
// ** ๋”ํ•˜๊ธฐ ์—ฐ์‚ฐ์ง€๋Š” ์ˆซ์ž+๋ฌธ์ž๋ฅผ ํ•จ๊ป˜์‚ฌ์šฉํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜

 2) ๋นผ๊ธฐ ์—ฐ์‚ฐ์ž(-)

console.log(5 - 2);       // 3
console.log("5" - "2");   // 3
console.log("5" - 2);     // 3
console.log(5 - "2");     // 3
console.log("five" - 2);  // NaN
// ** ๋นผ๊ธฐ ์—ฐ์‚ฐ์ž๋Š” ์ˆซ์ž์™€ ๋ฌธ์ž์—ด์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์ž๋™์œผ๋กœ ์ˆซ์ž๋กœ ๋ณ€ํ™˜

 3) ๊ณฑํ•˜๊ธฐ ์—ฐ์‚ฐ์ž(*),  ๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ์ž(/), ๋‚˜๋ˆ„๊ธฐ(=๋‚˜๋จธ์ง€) ์—ฐ์‚ฐ์ž(%)

console.log(2 * 3);       // 6
console.log("2" * "3");   // 6
console.log("2" * 3);     // 6
console.log(2 * "3");     // 6
console.log("two" * 3);   // NaN
----------------------
console.log(6 / 3);       // 2
console.log("6" / "3");   // 2
console.log("6" / 3);     // 2
console.log(6 / "3");     // 2
console.log("six" / 3);   // NaN
----------------------
console.log(7 % 3);       // 1
console.log("7" % "3");   // 1
console.log("7" % 3);     // 1
console.log(7 % "3");     // 1
console.log("seven" % 3); // NaN
//** ์œ„ 3๊ฐ€์ง€ ์—ฐ์‚ฐ์ž ๋ชจ๋‘ ์ˆซ์ž์™€ ๋ฌธ์ž์—ด์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์ž๋™์œผ๋กœ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

(2) ํ• ๋‹น ์—ฐ์‚ฐ์ž(assignment operators) 

 1) ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž(=) : ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

let x = 10;
console.log(x);   // 10

x = 5;
console.log(x);   // 5

2) ๋”ํ•˜๊ธฐ ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž(+=) / ๋นผ๊ธฐ ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž(-=) :  ๋”ํ•˜๊ธฐ,๋นผ๊ธฐ ๋“ฑํ˜ธ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋”ํ•˜๊ธฐ, ๋นผ๊ธฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.

let x = 10;
console.log(x);   // 10

x += 5;
console.log(x);   // 15
-----------------
let x = 10;
console.log(x);   // 10

x -= 5;
console.log(x);   // 5

3) ๊ณฑํ•˜๊ธฐ ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž(*=) / ๋‚˜๋ˆ„๊ธฐ ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž(/=) :  ๊ณฑํ•˜๊ธฐ, ๋‚˜๋ˆ„๊ธฐ ๋“ฑํ˜ธ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋”ํ•˜๊ธฐ, ๋นผ๊ธฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.

let x = 10;
console.log(x);   // 10

x *= 5;
console.log(x);   // 50
----------------
let x = 10;
console.log(x);   // 10

x /= 5;
console.log(x);   // 2

4) ๋‚˜๋จธ์ง€ ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž(%=) : ๋‚˜๋จธ์ง€ ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜์—์„œ ๊ฐ’์„ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let x = 10;
console.log(x);   // 10

x %= 3;
console.log(x);   // 1

(3) ๋น„๊ต ์—ฐ์‚ฐ์ž(comparison operators)

 1) ์ผ์น˜ ์—ฐ์‚ฐ์ž(===) : ์ผ์น˜ ์—ฐ์‚ฐ์ž๋Š” ์ž๋ฃŒํ˜•๊นŒ์ง€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

console.log(2 === 2);   // true
console.log("2" === 2);   // false
console.log(2 === "2");   // false
// ** type ๊นŒ์ง€ ๋ชจ๋‘ ์ผ์น˜ํ•ด์•ผ true๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.

 2) ๋ถˆ์ผ์น˜ ์—ฐ์‚ฐ์ž(!==) : ๋ถˆ์ผ์น˜ ์—ฐ์‚ฐ์ž๋Š” ์ž๋ฃŒํ˜•๊นŒ์ง€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

console.log(2 !== 2);   // false : ์ˆซ์ž2๊ฐ€ ์ˆซ์ž2์™€ ๋‹ค๋ฅด๋‹ˆ? ๋‹ฌ๋ผ!
console.log("2" !== 2);   // true : ๋ฌธ์ž2๋Š” ์ˆซ์ž2๋ž‘ ๋‹ค๋ฅด๋‹ˆ? ๋งž์•„!
console.log(2 !== "2");   // true : ์ˆซ์ž2๋Š” ๋ฌธ์ž2์™€ ๋‹ค๋ฅด๋‹ˆ? ๋งž์•„!

3) ์ž‘๋‹ค(<) ์—ฐ์‚ฐ์ž ์™€ ํฌ๋‹ค(>) ์—ฐ์‚ฐ์ž : ์ž‘๋‹ค์™€ ํฌ๋‹ค์˜ ์—ฐ์‚ฐ์ž๋Š” ์ˆซ์ž์™€ ๋ฌธ์ž์—ด์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์ž๋™์œผ๋กœ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

console.log(2 < 3);   // true
console.log(2 < "3");   // true
console.log("2" < 3);   // true
---------------------
console.log(2 > 3);   // false
console.log(2 > "3");   // false
console.log("2" > 3);   // false

4) ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค(<=) ์™€ ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค(>=) ์—ฐ์‚ฐ์ž : ๋‘ ์—ฐ์‚ฐ์ž๋Š” ์ˆซ์ž์™€ ๋ฌธ์ž์—ด์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์ž๋™์œผ๋กœ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. 

console.log(2 <= 3);   // true
console.log(2 <= "3");   // true
console.log("2" <= 3);   // true
console.log(2 <= 2);   // true
--------------------
console.log(2 >= 3);   // false
console.log(2 >= "3");   // false
console.log("2" >= 3);   // false
console.log(2 >= 2);   // true

(4) ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž(logical operators)

 1) ๋…ผ๋ฆฌ๊ณฑ(&&) ์—ฐ์‚ฐ์ž : ๋…ผ๋ฆฌ๊ณฑ ์—ฐ์‚ฐ์ž๋Š” ๋‘ ๊ฐ’์ด ๋ชจ๋‘ true์ผ ๊ฒฝ์šฐ์—๋งŒ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

console.log(true && true);   // true
console.log(true && false);   // false
console.log(false && true);   // false
console.log(false && false);   // false

2) ๋…ผ๋ฆฌํ•ฉ(||) ์—ฐ์‚ฐ์ž : ๋‘ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋ผ๋„ true์ผ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

console.log(true || true);   // true
console.log(true || false);   // true
console.log(false || true);   // true
console.log(false || false);   // false

3) ๋…ผ๋ฆฌ๋ถ€์ •(!) ์—ฐ์‚ฐ์ž : ๊ฐ’์„ ๋ฐ˜๋Œ€๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ผ๋ฆฌ๋ถ€์ • ์—ฐ์‚ฐ์ž๋Š” true๋ฅผ false๋กœ, false๋ฅผ true๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

console.log(!true);   // false
console.log(!false);   // true
console.log(!(2 > 1));   // false

(5) ์‚ผํ•ญ ์—ฐ์‚ฐ์ž(ternary operator) : ์กฐ๊ฑด์—๋”ฐ๋ผ ๊ฐ’์„ ์„ค์ •ํ•œ๋‹ค.

1) ์‚ผํ•ญ ์—ฐ์‚ฐ์ž(?:) : ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ฐ’์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋Š” ์กฐ๊ฑด์‹ ? true์ผ ๋•Œ์˜ ๊ฐ’ : false์ผ ๋•Œ์˜ ๊ฐ’ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

let x = 10;
let result = (x > 5) ? "ํฌ๋‹ค" : "์ž‘๋‹ค";
console.log(result);   // "ํฌ๋‹ค"

(6) ํƒ€์ž… ์—ฐ์‚ฐ์ž(type operators) 

1) typeof ์—ฐ์‚ฐ์ž : typeof ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์˜ ์ž๋ฃŒํ˜•์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ, typeof ์—ฐ์‚ฐ์ž๋Š” ์›์‹œ ์ž๋ฃŒํ˜•์˜ ๊ฒฝ์šฐ, ํ•ด๋‹น ์ž๋ฃŒํ˜•์˜ ์ด๋ฆ„์„, ๊ฐ์ฒด๋‚˜ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ, "object" ๋˜๋Š” "function"์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. typeof null์˜ ๊ฒฝ์šฐ "object"๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

console.log(typeof 123);   // "number"
console.log(typeof "123");   // "string"
console.log(typeof true);   // "boolean"
console.log(typeof undefined);   // "undefined"
console.log(typeof null);   // "object"
console.log(typeof {});   // "object"
console.log(typeof []);   // "object"
console.log(typeof function(){});   // "function"

 


 

 

  • 1-7๊ฐ• ํ•จ์ˆ˜: ํ•จ์ˆ˜๋Š” input / ouput ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

1. ํ•จ์ˆ˜ ์ •์˜ํ•˜๊ธฐ

1) ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ(function declaration) : function ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ add๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์„ ์–ธ. ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•จ์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜ํ•ด๋‘๊ณ , ํ•„์š”ํ•  ๋•Œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ( return ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. )

function add(x, y) {
  return x + y;
}

console.log(add(2, 3));   // 5

2) ํ•จ์ˆ˜ ํ‘œํ˜„์‹(function expression) : function ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ add๋ผ๋Š” ๋ณ€์ˆ˜์— ํ•จ์ˆ˜๋ฅผ ํ• ๋‹นํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•จ์ˆ˜๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜์—ฌ ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let add = function(x, y) {
  return x + y;
}

console.log(add(2, 3));   // 5

2. ํ•จ์ˆ˜ ํ˜ธ์ถœํ•˜๊ธฐ : add๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„ ๋’ค์— ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  - ex) ํ•จ์ˆ˜๋ช…()->add() 

function add(x, y) {
  return x + y;
}

console.log(add(2, 3));   // 5
---------------------------------------------
let functionResult = add (3,4);
console.log (functionResult); // 7

3. ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฐ˜ํ™˜๊ฐ’

1) ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜ : add๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ x์™€ y๋ผ๋Š” ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค. ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

function add(x, y) {
  return x + y;
}

console.log(add(2, 3));   // 5

2) ํ•จ์ˆ˜ ๋ฐ˜ํ™˜๊ฐ’ : add๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ x์™€ y๋ผ๋Š” ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„๋“ค์ด๊ณ , ์ด๋ฅผ ๋”ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

function add(x, y) {
  return x + y;
}

let result = add(2, 3);
console.log(result);   // 5

 


 

  • 1-8๊ฐ• ์Šค์ฝ”ํ”„ ๋ฐ ํ™”์‚ดํ‘œํ•จ์ˆ˜

1. ์Šค์ฝ”ํ”„

์Šค์ฝ”ํ”„ : ๋ณ€์ˆ˜๊ฐ€ ์–ด๋””๊นŒ์ง€ ์˜ํ–ฅ์„ ๋ผ์น ์ˆ˜ ์žˆ๋Š”๊ฐ€?

1)์ „์—ญ ์Šค์ฝ”ํ”„ : ์ „์—ญ ์Šค์ฝ”ํ”„์—์„œ ๋ณ€์ˆ˜ x๋ฅผ ์„ ์–ธํ•˜๊ณ , ํ•จ์ˆ˜ printX์—์„œ ๋ณ€์ˆ˜ x๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ์ „์—ญ ์Šค์ฝ”ํ”„์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์–ด๋””์—์„œ๋“ ์ง€ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let x = 10;

function printX() {
  console.log(x);
}

printX();   // 10

2) ์ง€์—ญ ์Šค์ฝ”ํ”„(local scope) : ์ง€์—ญ ์Šค์ฝ”ํ”„์—์„œ ๋ณ€์ˆ˜ x๋ฅผ ์„ ์–ธํ•˜๊ณ , ํ•จ์ˆ˜ printX์—์„œ ๋ณ€์ˆ˜ x๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ์ง€์—ญ ์Šค์ฝ”ํ”„์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ•ด๋‹น ํ•จ์ˆ˜ ๋‚ด์—์„œ๋งŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

function printX() {
  let x = 10;
  console.log(x);
}

printX();   //

3) ๋ธ”๋ก ์Šค์ฝ”ํ”„(block scope) : if๋ฌธ ๋‚ด์—์„œ ๋ณ€์ˆ˜ x๋ฅผ ์„ ์–ธํ•˜๊ณ , ์ด๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. if๋ฌธ ๋‚ด์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ•ด๋‹น ๋ธ”๋ก ๋‚ด์—์„œ๋งŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

if (true) {
  let x = 10;
  console.log(x);
}

console.log(x);   // ReferenceError: x is not defined
 

2. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

1) ๊ธฐ๋ณธ์ ์ธ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ : ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ add๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•จ์ˆ˜์˜ ์„ ์–ธ์ด ๊ฐ„๊ฒฐํ•ด์ง‘๋‹ˆ๋‹ค.

let add = (x, y) => {
  return x + y;
}

console.log(add(2, 3));   // 5

2) ํ•œ ์ค„๋กœ ๋œ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ : ํ•จ์ˆ˜ ๋‚ด๋ถ€์— return๋ฌธ์ด ํ•œ ์ค„๋กœ ์ž‘์„ฑ๋  ๊ฒฝ์šฐ, ์ค‘๊ด„ํ˜ธ์™€ return ํ‚ค์›Œ๋“œ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let add = (x, y) => x + y;

console.log(add(2, 3));   // 5

3) ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์ธ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ : ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์ธ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ square๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์ผ ๊ฒฝ์šฐ์—๋Š” ๊ด„ํ˜ธ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

let square = x => x * x;

console.log(square(3));   // 9