λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

JavaScript

(7)
콜백 ν•¨μˆ˜ 콜백 ν•¨μˆ˜λž€?콜백 ν•¨μˆ˜λŠ” λ‹€λ₯Έ ν•¨μˆ˜μ— 인수둜 μ „λ‹¬λ˜μ–΄ μ‹€ν–‰λ˜λŠ” ν•¨μˆ˜λ₯Ό λ§ν•©λ‹ˆλ‹€.즉, νŠΉμ • μž‘μ—…μ΄ μ™„λ£Œλœ ν›„ μ‹€ν–‰λ˜κ±°λ‚˜ μ΄λ²€νŠΈκ°€ λ°œμƒν–ˆμ„ λ•Œ ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.function greet(callback) { callback();}function sayHello() { console.log("μ•ˆλ…•ν•˜μ„Έμš”!");}greet(sayHello); μœ„μ˜ μ½”λ“œμ—μ„œ sayHelloκ°€ λ°”λ‘œ greet ν•¨μˆ˜μ— μ „λ‹¬λœ 콜백 ν•¨μˆ˜μž…λ‹ˆλ‹€.greet ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ callback()이 ν˜ΈμΆœλ˜λ©΄μ„œ μ „λ‹¬λœ 콜백 ν•¨μˆ˜κ°€ μ‹€ν–‰λ©λ‹ˆλ‹€. 콜백 ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œμ˜ this콜백 ν•¨μˆ˜ λ‚΄μ—μ„œ this ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•  λ•Œ κΈ°λŒ€ν•œλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. const user = { name: 'y9s2n6', greet: fu..
Promise 비동기 μ½”λ“œμ—μ„œλŠ” μ‹€ν–‰ μˆœμ„œλ₯Ό μ˜ˆμΈ‘ν•˜κΈ° μ–΄λ ΅κΈ° λ•Œλ¬Έμ— 비동기 μž‘μ—…μ΄ λλ‚œ ν›„ μ‹€ν–‰ν•  μ½”λ“œλ₯Ό λͺ…ν™•ν•˜κ²Œ μ œμ–΄ν•˜κΈ° μœ„ν•΄μ„œ Promiseκ°€ ν•„μš”ν•©λ‹ˆλ‹€.Promise λž€?비동기 μž‘μ—…μ„ 효율적으둜 μ²˜λ¦¬ν•  수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ‚΄μž₯ 객체Promise의 3κ°€μ§€ μƒνƒœ- Pending(λŒ€κΈ°) : 아직 μž‘μ—…μ΄ μ™„λ£Œλ˜μ§€ μ•Šμ€ μƒνƒœ- Fulfilled(성곡) : 비동기 μž‘μ—…μ΄ μ„±κ³΅μ μœΌλ‘œ 마무리된 μƒνƒœ- Rejected(μ‹€νŒ¨) : 비동기 μž‘μ—…μ΄ μ‹€νŒ¨ν•œ μƒνƒœ λŒ€κΈ° -> 성곡 : ν•΄κ²°(resolve) - μ›ν•˜λŠ” μž‘μ—…μ΄ μ™„λ£Œλ˜μ—ˆμ„ λ•Œ μ‹€ν–‰λŒ€κΈ° -> μ‹€νŒ¨ : κ±°λΆ€(reject) - μž‘μ—… 쀑 였λ₯˜κ°€ λ°œμƒν–ˆμ„ λ•Œ μ‹€ν–‰ const promise = new Promise(() => { setTimeout(() => { co..
ν™”μ‚΄ν‘œ ν•¨μˆ˜ 문제 상황 : React ν”„λ‘œμ νŠΈμ—μ„œ μ•„λž˜μ˜ μ½”λ“œμ™€ 같이 검색어 ν•„ν„° κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λŠ”λ° filteredTodosκ°€ μ›ν•˜λŠ” 값이 λ‚˜μ˜€μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.import { useState } from "react";import "./List.css";import TodoItem from "./TodoItem";const List = ({ todos }) => { const [search, setSearch] = useState(""); const onChangeSearch = (e) => { setSearch(e.target.value); }; const getFilteredData = () => { if (search === "") { return todos; } return..
μŠ€μ½”ν”„ (μ „μ—­ μŠ€μ½”ν”„, μ§€μ—­ μŠ€μ½”ν”„, 블둝 μŠ€μ½”ν”„, ν•¨μˆ˜ μŠ€μ½”ν”„) μŠ€μ½”ν”„ : λ³€μˆ˜λ‚˜ ν•¨μˆ˜μ˜ μ œμ•½ λ²”μœ„μ „μ—­, μ§€μ—­ μŠ€μ½”ν”„ - μ „μ—­ μŠ€μ½”ν”„ λ³€μˆ˜κ°€ μ „μ—­ μŠ€μ½”ν”„λ₯Ό κ°–λŠ”λ‹€λŠ” 것은 ν•΄λ‹Ή λ³€μˆ˜λ₯Ό μ½”λ“œ μ–΄λ””μ—μ„œλ‚˜ μ ‘κ·Όν•  수 μžˆλ‹€λŠ” μ˜λ―Έμž…λ‹ˆλ‹€.let a = 1; // β‘ function foo() { console.log(a);}function bar() { console.log(a);}foo(); // β‘‘bar(); // β‘’console.log(a); // β‘£ λ¨Όμ €, ν•¨μˆ˜ 외뢀에 λ³€μˆ˜ aλ₯Ό μ„ μ–Έν•˜κ³  1둜 μ΄ˆκΈ°ν™” ν–ˆμŠ΅λ‹ˆλ‹€. ν•¨μˆ˜ fooλ₯Ό ν˜ΈμΆœν•˜λ©΄ ν•¨μˆ˜ fooκ°€ μ‹€ν–‰λ˜μ–΄ λ³€μˆ˜ a인 1을 μ½˜μ†”μ— 좜λ ₯ν•©λ‹ˆλ‹€. ν•¨μˆ˜ barλ₯Ό ν˜ΈμΆœν•˜λ©΄ ν•¨μˆ˜ barκ°€ μ‹€ν–‰λ˜μ–΄ λ³€μˆ˜ a인 1을 μ½˜μ†”μ— 좜λ ₯ν•©λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ λ³€μˆ˜ a인 1을 μ½˜μ†”μ— 좜λ ₯ν•©λ‹ˆλ‹€. μœ„μ˜ μ½”λ“œμ—μ„œ λ³€μˆ˜ aλŠ” μ‘°κ±΄λ¬Έμ΄λ‚˜ 반볡문 ..
λ‚˜λ¨Έμ§€ λ§€κ°œλ³€μˆ˜(REST Parameters) μš°μ„  인수 객체에 λŒ€ν•΄μ„œ μ•Œμ•„λ΄…μ‹œλ‹€.인수 객체(Arguments Object) : ν•¨μˆ˜μ— μ „λ‹¬λœ μΈμˆ˜μ— ν•΄λ‹Ήν•˜λŠ” μœ μ‚¬ λ°°μ—΄ 객체인수 κ°μ²΄λŠ” JavaScript의 였래된 κΈ°λŠ₯μž…λ‹ˆλ‹€.  μœ μ‚¬ λ°°μ—΄ κ°μ²΄λž€ length 속성과 0λΆ€ν„° 인덱슀된 λ‹€λ₯Έ 속성을 κ°€μ§€κ³  μžˆμ§€λ§Œ, λ°°μ—΄μ˜ forEach, map λ“±κ³Ό 같은 λ‚΄μž₯ λ©”μ„œλ“œλ₯Ό κ°€μ§€κ³  μžˆμ§€ μ•Šλ‹€λŠ” λœ»μž…λ‹ˆλ‹€. 인수 κ°μ²΄λŠ” μ‹€μ œ 배열이 μ•„λ‹™λ‹ˆλ‹€. function sum() { console.log(arguments); console.log(arguments.length); console.log(arguments[0]);}sum(); // [Arguments] {}// 0// undefinedsum(1, 2, 3); // [Arguments] { '0'..
λ§€κ°œλ³€μˆ˜(Parameter)와 인수(Argument) λ§€κ°œλ³€μˆ˜μ™€ 인수의 λͺ…ν™•ν•œ 차이λ₯Ό μ•Œμ§€ λͺ»ν•΄μ„œ ν™•μ‹€νžˆ μ •λ¦¬ν•΄λ³΄κ³ μž ν•©λ‹ˆλ‹€.  λ§€κ°œλ³€μˆ˜(Parameter)λ§€κ°œλ³€μˆ˜λŠ” ν•¨μˆ˜ μ •μ˜ μ‹œ, ν•¨μˆ˜μ— 전달될 수 μžˆλŠ” 값을 κ°€λ¦¬ν‚€λŠ” λ³€μˆ˜μž…λ‹ˆλ‹€. function add(a, b) { return a + b;} μœ„μ˜ μ½”λ“œμ—μ„œ a와 bλŠ” λ§€κ°œλ³€μˆ˜μž…λ‹ˆλ‹€. add ν•¨μˆ˜λŠ” 2개의 λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ•„μ„œ κ·Έ 값을 λ”ν•©λ‹ˆλ‹€.인수(Argument)μΈμˆ˜λŠ” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ μ‹€μ œλ‘œ ν•¨μˆ˜μ— μ „λ‹¬λ˜λŠ” κ°’μž…λ‹ˆλ‹€. const result = add(2, 3); μœ„μ˜ μ½”λ“œμ—μ„œ 2와 3은 μΈμˆ˜μž…λ‹ˆλ‹€. add ν•¨μˆ˜κ°€ 호좜될 λ•Œ, 2와 3μ΄λΌλŠ” 값이 각각 λ§€κ°œλ³€μˆ˜ a와 b에 λŒ€μž…λ©λ‹ˆλ‹€.
κΈ°λ³Έ λ§€κ°œλ³€μˆ˜(default parameters) μ˜ˆμ‹œλ‘œ greetν•¨μˆ˜λŠ” nameμ΄λΌλŠ” λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. function greet(name) { console.log(`Hello, ${name}!`);} ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ name에 λŒ€ν•œ 값을 μ „λ‹¬ν•˜μ§€ μ•ŠμœΌλ©΄ name λ§€κ°œλ³€μˆ˜λŠ” μžλ™μœΌλ‘œ undefined κ°€ λ©λ‹ˆλ‹€. greet();//Hello, undefined κ³Όκ±°μ— 기본값을 μ„€μ •ν•˜λŠ” 일반적인 방법 function greet(name) {    if (name === undefined){        name = 'Anonymous';    }    console.log(`Hello, ${name}`);}greet();  // Hello, Anonymousgreet('Tom');  // Hello, Tom ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ λ§€κ°œλ³€μˆ˜ 값을 ν…ŒμŠ€νŠΈν•˜μ—¬..