๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋ค
- Function ์ด๋? ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ์ ์ธ building block
- subprogram์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ ์ฌ๋ฌ๋ฒ ์ฌ ์ฌ์ฉ์ด ๊ฐ๋ฅ
- ํ ๊ฐ์ง์ task ๋๋ ๊ฐ์ ๊ณ์ฐํ๊ธฐ ์ํด ์ฌ์ฉ
Function name (param1, param2..) { // ํ๋ผ๋ฏธํฐ
body(ํจ์ ์์ ๊ธฐ๋ณธ์ ์ธ business logic์ ์์ฑ)
return;
}
function printHello { // ์ด๋ฆ๋ง ์ ์ํ๊ณ ํ๋ผ๋ฏธํฐ๋ ๋ฐ์ง ์์ ์ํ
console.log('Hello');
}
printHello();
// ์กฐ๊ธ ๋ ์ ์ฉํ๊ฒ ๋ง๋ค์ด๋ณด๋ฉด!
function log(message) { // ์ด๋ฆ ์ ์ํ๊ณ ํ๋ผ๋ฏธํฐ ๋ฐ์ ์ํ
console.log(message);
}
log('Hello');
log(1234);
function changename(obj) {
obj.name = 'coder';
}
const april = { name: 'april'}; // april์ด๋ผ๋ ๋ฒ์์์ april์ด๋ผ๋ object๋ฅผ ์ ์ํ๊ณ ํ ๋น
changename(april);
console.log(april); //coder
โจ์ฐธ๊ณ โจ Early Return, early exit
//bad case
function upgradeUser (user) {
if (user.point > 10) {
//long upgrade logic... ๋ธ๋ญ ์์์ ๋ก์ง์ ๋ง์ด ์์ฑํ๋ฉด ๊ฐ๋
์ฑ ์ ํ
}
}
//good case
function upgradeUser (user) {
if (user.point <= 10) {
return; // ์กฐ๊ฑด์ด ๋ง์ง ์์ ๊ฒฝ์ฐ ๋นจ๋ฆฌ returnํด์ ํจ์ ์ข
๋ฃ
}
//long upgrade logic... ์กฐ๊ฑด์ด ๋ง์ ๊ฒฝ์ฐ์ ์์ฑํ ๋ก์ง ์คํ
}
ํจ์๋ ๋ค๋ฅธ ๋ณ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ ๋น์ด ๋๊ณ , function์ parameter๋ก ์ ๋ฌ์ด ๋๋ฉฐ return๊ฐ์ผ๋ก๋ return์ด ๋๋ค
const print = function () { // ํจ์์ ์ด๋ฆ์ด ์๋ ๊ฒ์ anonymous function
// ํจ์๋ฅผ ์ ์ธํด์ ๋ณ์์ ํ ๋น
console.log('print');
}
print (); // print๋ผ๋ ๋ณ์์ ํจ์๋ฅผ ํธ์ถ
const printAgain = print; // ๋ค์ ๋ค๋ฅธ ๋ณ์์ ํ ๋น
printAgain();
const sumAgain = sum;
console.log(sumAgain(1, 3));
๐ํจ์๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค์ด ์ฃผ๋ ํจ์
const simplePrint = funtion () {
console.log('simplePrint!');
}
// โ Arrow Function์ผ๋ก ๋ณ๊ฒฝํ์ ๋
const simplePrint = () => console.log('simplePrint!');
// Arrow Function์ ๋ ๋ค๋ฅธ ์์ . ํ ์ค๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅํ ๊ฒฝ์ฐ
const add = (a, b) => a + b;
// Arrow Function ํ ์ค ์ด์์ผ ๊ฒฝ์ฐ
const simpleMultiply = (a, b) => {
//do something more
retun a * b;
}
๐ฉ์ง์ค! Class vs Object :: ํด๋์ค์ ์ค๋ธ์ ํธ์ ์ฐจ์ด์
- class๋ template๊ฐ์ ํ,
- ์ด ํ์์ data๋ฅผ ๋ฃ์ ๊ฒ์ด object
class person {
name; // name, age ๊ฐ์ ์์ฑ (field)
age;
spaek(); // ํ๋ (method)
}
template: ์ค์ data๋ ๋ค์ด์์ง ์๊ณ ํ๋ง ์ ์ธ *๋ถ์ด๋นตํ
ํ ๋ฒ๋ง ์ ์ธํ๊ณ
๋ฐ์ดํฐ๋ ๋ค์ด์์ง ์๋ค
๐Object: class์ template์์data๋ฅผ ๋ฃ์ ๊ฒ
ํฅ์ ๋ฃ์ ๋ถ์ด๋นต, ํฌ๋ฆผ ๋ฃ์ ๋ถ์ด๋นต ๋ฑ
class person {
// constructor ์์ฑ์
constructor(name, age) {
// fields
this.name = name;
this.age = age;
}
// methods
spaek() {
console.log('${this.name}: hello!');
}
}
const april = new person ('april', 20); // ์๋ก์ด object๋ฅผ ๋ง๋ค ๋์๋ new๋ผ๋ ํค์๋๋ฅผ ์ฌ์ฉ
console.log(april.name); // april
console.log(april.age); // 20
april.speak(); // april: hello!
- Object ๋? ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐ์ดํฐ ์ ํ ์ค ํ๋
- ์๋ก ์ฐ๊ด๋ ๋ณ์์ ํจ์๋ฅผ ๊ทธ๋ฃนํํ๊ณ ์ด๋ฆ์ ๋ถ์ธ ๊ฒ
- ๊ด๋ จ ๋ฐ์ดํฐ ๋๋ ๊ธฐ๋ฅ์ ๋ํ ์ปฌ๋ ์
- ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฑฐ์ ๋ชจ๋ ๊ฐ์ฒด๋ ์ธ์คํด์ค
- object = { key : value } ; โ โ โ โ object๋ key์ value์ ์งํฉ์ฒด์ด๋ค
// primetive ํ์
์ ๋ณ์ ํ๋๋น ํ๋์ ๊ฐ์ ํ ๋น
const name = 'april';
const age = 20;
print(name, age); // ์ถ๋ ฅํ๊ณ ์ถ์ ํจ์๋ฅผ ๋ง๋ ๋ค๋ฉด name๊ณผ age๋ฅผ ๊ฐ๊ฐ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ
function print(name, age) { // ๋ ๊ฐ์ง์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์์ฌ ์ ์๋๋ก ํจ์๋ฅผ ์ ์ํด์ ์ฌ์ฉ
console.log(name); // firstname, address๋ฑ์ ์ธ์๊ฐ ๋ง์์ง๊ฒ ๋๋ฉด ๊ด๋ฆฌ/์ด์ํ๊ธฐ ์ด๋ ค์
}
// โ Object๋ก ๋ณ๊ฒฝํด๋ณด๋ฉด
function print(person) {
console.log(person.name);
}
const april = {nameL 'april', age: '20';} // ๊ฐํธํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ์ฅ์ ์ด ์์
print(april);
// object๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์๋๋ฐ
const obj1 {}; // 'object literal' syntax(๋ฌธ๋ฒ) {}๋ฅผ ์ด์ฉํด์ ๋ง๋๋ ๊ฒ์ object literal๋ผ๊ณ ํจ
const obj2 = new Object(); // 'object constructor' syntax
// new๋ผ๋ ํค์๋๋ก class template๋ฅผ ์ฌ์ฉํด์ object๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ
delete april.age; // ์ญ์ ํ๊ฑฐ๋
april.address = 'seoul'; // ์ถ๊ฐํ ์ ์๋ค
const arr1 = new array();
const arr2 = [1, 2]; // index 0๋ฒ์ '1'์ด๋ผ๋ data๊ฐ ๋ค์ด์๊ณ , index 1๋ฒ์ '2'๋ผ๋ data๊ฐ ์์
const fruits = ['๐', '๐'];
console.log(fruits); // ๐, ๐
console.log(fruits.length); // 2
console.log(fruits[0]); // ๐
console.log(fruits[1]); // ๐
console.log(fruits[2]); // undefined
console.log(fruits[fruits.length - 1]); // ๋ฐฐ์ด์ ๋ง์ง๋ง ๊ฐ์ ์ฐพ์ ๋์๋ ์ด ๊ธธ์ด(length)์์ -1๋ก ๊ณ์ฐ
const fruits = ['๐', '๐'];
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]); // ๐, ๐
}
for (let fruit of fruits) {
console.log(fruit); // ๐, ๐
}
โ ๋ชฉํ!
๋๋ฆผ์ฝ๋ฉ by ์๋ฆฌ
์ํ์ฝ๋ฉ
MDN_Reference
MDN_Object