rigood

[JavaScript] μΌλ°˜ν•¨μˆ˜μ™€ ν™”μ‚΄ν‘œν•¨μˆ˜ λ³Έλ¬Έ

🎨 ν”„λ‘ νŠΈμ—”λ“œ/JavaScript

[JavaScript] μΌλ°˜ν•¨μˆ˜μ™€ ν™”μ‚΄ν‘œν•¨μˆ˜

rigood 2023. 1. 22. 23:04

μΌλ°˜ν•¨μˆ˜

- function ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •μ˜ν•˜λŠ” ν•¨μˆ˜

- ν•¨μˆ˜ μ„ μ–Έμ‹μ΄λ‚˜ ν•¨μˆ˜ ν‘œν˜„μ‹μœΌλ‘œ ν•¨μˆ˜λ₯Ό μ •μ˜ν•  수 μžˆλ‹€.

 

ν™”μ‚΄ν‘œν•¨μˆ˜

- μžλ°”μŠ€ν¬λ¦½νŠΈ ES6 λ²„μ „μ—μ„œ λ“±μž₯ν•œ λ¬Έλ²•μœΌλ‘œ, ν•¨μˆ˜λ₯Ό μ •μ˜ν•  λ•Œ μ‚¬μš©ν•˜λŠ” 또 λ‹€λ₯Έ 문법이닀.

- 기쑴의 ν•¨μˆ˜ ν‘œν˜„μ‹μ„ 훨씬 더 κ°„κ²°ν•œ λ¬Έλ²•μœΌλ‘œ μž‘μ„±ν•  수 있게 ν•΄μ€€λ‹€.

- function ν‚€μ›Œλ“œλ₯Ό μ§€μš°κ³ , μ†Œκ΄„ν˜Έμ™€ μ€‘κ΄„ν˜Έ 사이에 ν™”μ‚΄ν‘œλ₯Ό λ„£μ–΄μ€€λ‹€.

- ν™”μ‚΄ν‘œν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄μ£Όκ³ , ν•¨μˆ˜λ₯Ό λ³€μˆ˜μ— ν• λ‹Ήν•œλ‹€.

- λ³€μˆ˜λ₯Ό ν•¨μˆ˜μ˜ μ΄λ¦„μ²˜λŸΌ μ‚¬μš©ν•˜μ—¬ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  수 μžˆλ‹€.

const main = () => {
	console.log("hello");
}

main();

 

ν•¨μˆ˜ 선언식

- μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ ν•¨μˆ˜λ₯Ό μ„ μ–Έν•˜λŠ” κ°€μž₯ 기본적인 방식

- function ν‚€μ›Œλ“œμ™€ ν•¨μˆ˜ 이름을 μ“°κ³ , ν•¨μˆ˜ λΈ”λŸ­ μ•ˆμ— μ‹€ν–‰ν•  μ½”λ“œλ₯Ό μž‘μ„±ν•œλ‹€.

function main(){
	console.log("hello");
}

main();

- ν˜Έμ΄μŠ€νŒ…(ν•¨μˆ˜μ˜ 선언을 μ½”λ“œμ˜ μ΅œμƒλ‹¨μœΌλ‘œ λŒμ–΄μ˜¬λ¦¬λŠ” 것)이 κ°€λŠ₯ν•˜λ‹€.

- ν•¨μˆ˜λ₯Ό μ„ μ–Έν•˜κΈ° 전에 ν˜ΈμΆœν•  수 μžˆλ‹€.

main();

function main(){
	console.log("hello");
}

- ν•¨μˆ˜μ˜ 이름을 ν•„μˆ˜μ μœΌλ‘œ 적어야 ν•˜κΈ° λ•Œλ¬Έμ— 읡λͺ…ν•¨μˆ˜λ₯Ό λ§Œλ“€ 수 μ—†λ‹€.

 

ν•¨μˆ˜ ν‘œν˜„μ‹

- ν•¨μˆ˜ 선언식과 달리, 읡λͺ…ν•¨μˆ˜λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.

- 읡λͺ…ν•¨μˆ˜λ₯Ό 선언함과 λ™μ‹œμ— ν•¨μˆ˜λ₯Ό mainμ΄λΌλŠ” λ³€μˆ˜μ— ν• λ‹Ήν•œλ‹€.

- λ³€μˆ˜λ₯Ό ν•¨μˆ˜μ˜ μ΄λ¦„μ²˜λŸΌ μ‚¬μš©ν•˜μ—¬ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  수 μžˆλ‹€.

- ν•¨μˆ˜λ₯Ό ν•˜λ‚˜μ˜ ν‘œν˜„μ‹ μ•ˆμ—μ„œ μ •μ˜ν•˜λŠ” 것

const main = function() {
	console.log("hello");
}

main();

- ν•¨μˆ˜ 선언식과 달리, ν˜Έμ΄μŠ€νŒ…μ΄ λΆˆκ°€λŠ₯ν•˜λ‹€.

main();

const main = function() {
	console.log("hello");
}

// κ²°κ³Ό: Uncaught ReferenceError: Cannot access 'main' before initialization

 

μΌλ°˜ν•¨μˆ˜λ₯Ό ν™”μ‚΄ν‘œν•¨μˆ˜λ‘œ λ°”κΎΈκΈ°

- function ν‚€μ›Œλ“œμ™€ ν•¨μˆ˜ 이름을 μ§€μš°κ³ , λ³€μˆ˜μ— ν•¨μˆ˜λ₯Ό ν• λ‹Ήν•œ ν›„ μ†Œκ΄„ν˜Έμ™€ μ€‘κ΄„ν˜Έ 사이에 ν™”μ‚΄ν‘œλ₯Ό λ„£μ–΄μ€€λ‹€.
- λΈ”λŸ­ μ•ˆμ— μ½”λ“œκ°€ 1쀄밖에 없을 λ•ŒλŠ” μ€‘κ΄„ν˜Έμ™€ return ν‚€μ›Œλ“œ μƒλž΅ κ°€λŠ₯

- ν™”μ‚΄ν‘œν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜κ°€ 1κ°œλ°–μ— 없을 λ•Œ, λ§€κ°œλ³€μˆ˜λ₯Ό κ°μ‹ΈλŠ” μ†Œκ΄„ν˜Έ μƒλž΅ κ°€λŠ₯

- ν™”μ‚΄ν‘œν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜κ°€ 2개 μ΄μƒμ΄κ±°λ‚˜ μ—†λŠ” κ²½μš°μ—λŠ”, λ§€κ°œλ³€μˆ˜λ₯Ό κ°μ‹ΈλŠ” μ†Œκ΄„ν˜Έ μƒλž΅ λΆˆκ°€

// μΌλ°˜ν•¨μˆ˜
function add(a,b) {
	return a+b;
}
// ν™”μ‚΄ν‘œν•¨μˆ˜
const add = (a,b) => return a+b;

// μΌλ°˜ν•¨μˆ˜
function print(text) {
	console.log(text)
}
// ν™”μ‚΄ν‘œν•¨μˆ˜
const print = text => console.log(text);

// μΌλ°˜ν•¨μˆ˜
fucntion print() {
	console.log("hi");
}
// ν™”μ‚΄ν‘œν•¨μˆ˜
const print = () => console.log("hi");

- 객체λ₯Ό returnν•  λ•Œ μ€‘κ΄„ν˜Έμ™€ return ν‚€μ›Œλ“œλ₯Ό μƒλž΅ν•˜λ©΄ 문법에 ν˜Όλž€μ΄ μ˜€λ―€λ‘œ, 객체λ₯Ό μ†Œκ΄„ν˜Έλ‘œ 감싸쀀닀.

const getObject = () => {
	return { name: "rigood" };
}

const getObject = () => ({ name : "rigood" });

 

μΌλ°˜ν•¨μˆ˜μ™€ ν™”μ‚΄ν‘œν•¨μˆ˜μ˜ 차이점: arguments와 κ°€λ³€μΈμž

- μΌλ°˜ν•¨μˆ˜λŠ” λ§€κ°œλ³€μˆ˜λ₯Ό λ”°λ‘œ λͺ…μ‹œν•˜μ§€ μ•Šμ•„λ„ argumentsλΌλŠ” λ³€μˆ˜λ₯Ό μ•”λ¬΅μ μœΌλ‘œ μ „λ‹¬λ°›λŠ”λ‹€.

- argumentsλž€, ν•¨μˆ˜κ°€ 전달받은 인자λ₯Ό λ‹΄κ³ μžˆλŠ” λ°°μ—΄ ν˜•νƒœμ˜ 객체 (배열은 μ•„λ‹˜!)

- 인자의 κ°œμˆ˜κ°€ μ •ν•΄μ§€μ§€ μ•Šμ€ κ°€λ³€μΈμžκ°€ μ „λ‹¬λ˜λŠ” ν•¨μˆ˜λ₯Ό μ“Έ λ•Œ μœ μš©ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ‹€.

 function main() {
 	console.log(arguments)
 }
 
 main(1,2,3)

 

- ν™”μ‚΄ν‘œν•¨μˆ˜λŠ” argumentsλΌλŠ” λ³€μˆ˜λ₯Ό 전달받지 λͺ»ν•œλ‹€.

 

 

- ν™”μ‚΄ν‘œν•¨μˆ˜μ—μ„œ κ°€λ³€μΈμžλ₯Ό μ²˜λ¦¬ν•˜λ €λ©΄, λ§€κ°œλ³€μˆ˜μ— μŠ€ν”„λ ˆλ“œ μ—°μ‚°μž(...)와 λ³€μˆ˜λ₯Ό λ„£μœΌλ©΄ λœλ‹€.

 

 

 

 

좜처

별코딩 https://youtu.be/mfaQOlc73pU

 

Comments