[Udemy:React] Section1~2: JS ๋ณต์Šต

Beanxxยท2024๋…„ 7์›” 7์ผ
0

Udemy:React

๋ชฉ๋ก ๋ณด๊ธฐ
1/2
post-thumbnail

๐Ÿ“ผ Udmey: React ์™„๋ฒฝ ๊ฐ€์ด๋“œ 2024 with React Router & Redux

์ทจ์ค€ ๋•Œ(์•ฝ 2๋…„ ์ „์ฏค) ๊ตฌ๋งคํ•ด์„œ ๋“ค์—ˆ๋˜ Udemy React ๊ฐ•์ขŒ๊ฐ€ ์ž‘๋…„ 10์›”์ฏค์— ๊ฐ•์˜ ๋‚ด์šฉ ๋Œ€๋ถ€๋ถ„์ด ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์—ˆ๋‹ค๊ณ  ํ•ด์„œ ์ดˆ์‹ฌ ์ฐพ์„ ๊ฒธ ๋‹ค์‹œ ๋“ฃ๊ธฐ ํ”„๋กœ์ ํŠธ !

์–ผ๋ ๋šฑ๋•… 1๋…„ 4๊ฐœ์›”์ฐจ ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์—ˆ์ง€๋งŒ ๋ง‰์ƒ ์ฝ”๋“œ ๋กœ์ง ์›๋ฆฌ๋ฅผ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ์„ค๋ช…ํ•ด์ค„ ์ˆ˜ ์žˆ์„ ๋งŒํผ ๊ธฐ์ดˆ๋ฅผ ์ž˜ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง„ ์•Š์•„์„œ ์ฒจ๋ถ€ํ„ฐ ๊พธ์ค€ํžˆ ์™„๊ฐ•ํ•ด๋ณด๊ธฐ๋กœ,,

(์‚ฌ์‹ค ์œ ๋ฐ๋ฏธ ๋ฆฌ์•กํŠธ ๊ฐ•์˜ ์žฌ์™„๋… 2024 ์—ฐ์ดˆ ๋ชฉํ‘œ์˜€๋Š”๋ฐ ๋ฒŒ์จ 2024๋…„ ๋ฐ˜๋…„ ํ›Œ์ฉ ๋„˜์€ ์‹œ์ ์— ๋“ฃ๊ธฐ ์‹œ์ž‘,, ๐Ÿฅฒ)

Section1: ์‹œ์ž‘ํ•˜๊ธฐ

React๋ž€? ์›น ๋ฐ ๋„ค์ดํ‹ฐ๋ธŒ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฆ‰, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์ถ•์„ ์œ„ํ•œ JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

โœ‹ย JS: ๋ช…๋ นํ˜•์œผ๋กœ ์ฝ”๋“œ ์ž‘์„ฑ vs React: ์„ ์–ธํ˜•์œผ๋กœ ์ฝ”๋“œ ์ž‘์„ฑ

๐Ÿ’กย TIP !
๋ธŒ๋ผ์šฐ์ € ์ฐฝ์— react.new ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์ž๋™์œผ๋กœ CodeSandbox์˜ new reat project playground๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค

โœ… vite๋กœ new react project ์ƒ์„ฑํ•˜๊ธฐ

npm create vite@lastest [project_name]
npm run dev


Section2: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ƒˆ๋กœ๊ณ ์นจ

โœ… JS ํŒŒ์ผ importํ•˜๊ธฐ

<script src="assets/scripts/app.js" defer type="module"></script>

defer
: HTML ๋ฌธ์„œ๋ฅผ ์ฝ์–ด์™€ ํŒŒ์‹ฑํ•œ ํ›„ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ import๋˜๊ณ ๋‚˜์„œ ์‹คํ–‰๋˜๋„๋ก ํ•˜๋Š” ์†์„ฑ
โ‡’ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ HTML ์š”์†Œ๊ฐ€ ์ด๋ฏธ ๋กœ๋“œ๋˜๋„๋ก ๋ณด์žฅ

  • src ์†์„ฑ์ด ๋ช…์‹œ๋œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, <script> ์š”์†Œ๊ฐ€ ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ !
  • defer ์†์„ฑ์ด ์—†์„ ๊ฒฝ์šฐ ๋ฐ”๋กœ ์‹คํ–‰

type=โ€moduleโ€
: ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ๋กœ ์ทจ๊ธ‰ (import, export ์‚ฌ์šฉ ๊ฐ€๋Šฅ)


โœ… React์˜ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค

React์—์„œ๋Š” ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค
โ‡’ ์ด๋ง์ฆ‰์Šจ, ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ๊ทธ๋Œ€๋กœ ์‹คํ–‰๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๊ทธ ์ „์— ๋‚ด๋ถ€์ ์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์ˆ˜์ •๋œ๋‹ค๋Š” ๋œป
โ‡’ ์ด ๊ณผ์ •์—์„œ ๋นŒ๋“œ์‹œ ์ž๋™์œผ๋กœ script ํƒœ๊ทธ๋ฅผ html ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค

  1. ๋’ค์—์„œ ์†Œ์Šค ์ฝ”๋“œ ํ™•์ธ
  2. ์†Œ์Šค ์ฝ”๋“œ ๋ณ€ํ™˜
  3. HTML ํŒŒ์ผ ์ˆ˜์ •
  4. script ์š”์†Œ ์ถ”๊ฐ€
  5. ๋ณ€ํ™˜๋œ ์†Œ์Šค ์ฝ”๋“œ ๋กœ๋“œ
  6. ์›นํŽ˜์ด์ง€์—์„  ๋ณ€ํ™˜๋œ ์†Œ์Šค ์ฝ”๋“œ ์‹คํ–‰

๐Ÿ™‹โ€โ™€๏ธย ๊ทธ๋Ÿผ ์™œ React์—์„  ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฑธ๊นŒ?

๐Ÿ“ข
1) ๋ฆฌ์•กํŠธ ์ฝ”๋“œ์—๋Š” JSX ์ฝ”๋“œ๋„ ํฌํ•จ๋˜์–ด ์žˆ์–ด์„œ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ๋ฆฌ์•กํŠธ ๋ณธ์—ฐ์˜ ์ฝ”๋“œ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ!
2) ๋ฆฌ์•กํŠธ ์ฝ”๋“œ๋Š” production์„ ์œ„ํ•œ ์ตœ์ ํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ!
โŒž ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ๋ณ€์ˆ˜ ์ด๋ฆ„ ๋‹จ์ถ• ๋ฐ ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•˜์—ฌ ์›น์‚ฌ์ดํŠธ ๋ฐฉ๋ฌธ์ž๊ฐ€ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ์˜ ์–‘์„ ์ตœ์ ํ™”ํ•จ


โœ… import & export

1๏ธโƒฃ default export

// ํŒŒ์ผ๋ณ„ ์˜ค์ง ํ•˜๋‚˜์˜ default export ์กด์žฌ ๊ฐ€๋Šฅ
export default 'AComponents';

// default export์˜ ๊ฒฝ์šฐ {} ์ค‘๊ด„ํ˜ธ ์—†์ด import
import AComponents from './util.ts'

2๏ธโƒฃ named export

export const BComponents = () => {...}

import { BComponents } from './util' // ๋™์ผ ํด๋” ๋‚ด ๋‹ค๋ฅธ ํŒŒ์ผ import ํ•˜๋Š” ๊ฒฝ์šฐ์˜ import path

๐Ÿ’ก React์—์„œ import ํŒŒ์ผ๋ช… ์ž‘์„ฑ์‹œ ํ™•์žฅ์ž๋ช… ์ œ๊ฑฐ ๊ฐ€๋Šฅ ! โ† ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ ์ž๋™์œผ๋กœ ํ™•์žฅ์ž๋ช… ์ถ”๊ฐ€ํ•ด์ฃผ๋ฏ€๋กœ

3๏ธโƒฃ as import

import * as util form './util.js';
import { apikey as ak } from './util.ts'

๐Ÿ‘€ ํ•˜๋‚˜์˜ ํŒŒ์ผ์€ ์˜ค์ง ํ•˜๋‚˜์˜ default exports์™€ ๋ฌดํ•œํ•œ named exports๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค


โœ… ๋ณ€์ˆ˜

โ€ฃ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ์  โ—๏ธ ๊ฐ’ ์žฌ์‚ฌ์šฉ์„ฑ โ†‘ โ—๏ธ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ โ†‘ โ—๏ธ
โ€ฃ ๋ณ€์ˆ˜๋ช…, ํ•จ์ˆ˜๋ช…์€ ๋ณดํ†ต camelCase๋กœ ์ž‘์„ฑ
โ€ฃ const ๊ฐ’ ์žฌํ• ๋‹น ๋ถˆ๊ฐ€(read-only) vs let ๊ฐ’ ์žฌํ• ๋‹น ๊ฐ€๋Šฅ


โœ… ํ•จ์ˆ˜

โ€ฃ parameter default value

// default ๊ฐ’ ์ง€์ • ๊ฐ€๋Šฅ
function createGreeting(username, message = "Hello!") {
	return "Hi, I am" + userName + message;
}

// message์˜ default๊ฐ’์ด ์กด์žฌํ•˜๋ฏ€๋กœ ์ƒ๋žต ๊ฐ€๋Šฅ
const greeting1 = createGreeting("Max");
// โ€ฃ Hi, I am Max Hello!

// message ๊ฐ’์„ ๋”ฐ๋กœ ์„ ์–ธํ•ด์คฌ์œผ๋ฏ€๋กœ default๊ฐ’์„ override
const greeting2 = createGreeting("Manuel", "Hello, what's up?");
// โ€ฃ Hi, I am Manuel Hello, what's up?

โ€ฃ arrow function


// ์ต๋ช… ํ•จ์ˆ˜ (์ฃผ๋กœ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์‚ฌ์šฉ)
export default function() {...} // ๊ธฐ๋ณธ ํ•จ์ˆ˜
export default () => {...} // ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ -> function ํ‚ค์›Œ๋“œ ์ž‘์„ฑ ์•ˆํ•ด๋„ ๋˜์„œ ์ข€ ๋” ๊ฐ„๋‹จ!

// ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์— ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์œผ๋ฉด ๊ด„ํ˜ธ ์ƒ๋žต X
export default () => {...}

// ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ด„ํ˜ธ ์ƒ๋žต O
export default username => {...}

// ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ ์žˆ๋Š” ๊ฒฝ์šฐ์—” ๊ด„ํ˜ธ ์ƒ๋žต X
export default (userName, userAge) => {...}

// ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์— ๋ฐ˜ํ™˜๋ฌธ๋งŒ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ, return๊ณผ {} ์ƒ๋žต O
const callMe = number => number * 3;
                                       
// ๊ฐ์ฒด ๋ฐ˜ํ™˜์‹œ ์ถ”๊ฐ€ ๊ด„ํ˜ธ() ๋‚ด ๊ฐ์ฒด ์ž‘์„ฑ
const callMe = number => ({ age: number })

// โŒ ์ค‘๊ด„ํ˜ธ๋งŒ ์ƒ๋žต, return ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ error!! โŒ
const callMe = number => return number * 3;

โœ… ๊ฐ์ฒด & ํด๋ž˜์Šค

โ€ฃ ๊ฐ์ฒด

const user = {
	name: 'MAX',
	age: 26,
	greet(userName) {
		console.log(this.age); // 26
	}
}

user.greet();

โ€ฃ ํด๋ž˜์Šค

class User { // ํด๋ž˜์Šค๋ช…์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘
	// ์ƒ์„ฑ์ž ํ•จ์ˆ˜
	constructor(name, age) {
		this.name = name;
		this.age = age;
	}

	greet() {
		console.log('Hello!');
	}
} // ๊ตฌ์‹ old ๊ตฌ๋ฌธ

// ----------------------------

// ์ตœ์‹  new ๊ตฌ๋ฌธ
class User {
	name = 'Max';
	age = 26;	
}

// ----------------------------

// new ๊ฐ์ฒด ์ƒ์„ฑ
const user1 = new User('Manuel', 35);
user1.greet(); // Hello!

โœ… ๋ฐฐ์—ด

์ฃผ๋กœ ๊ฐ’ ๋ชฉ๋ก ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉ

โ€ฃ findIndex

const hobbies = ['Sports', 'Cooking', 'Reading'];

// ํ•จ์ˆ˜๋ฅผ ์ž…๋ ฅ ๋ฐ›์Œ
const index = hobbies.findIndex((item) => {
	return item === 'Sports';	
});
// โ€ฃ 0

// {}, return ์ƒ๋žตํ•ด์„œ ์ข€ ๋” ๊ฐ„๋‹จํžˆ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
const index = hobbies.findIndex((item) => item === 'Sports'); // โ€ฃ 0

โ€ฃ map โญ๏ธ

๋ชฉ๋ก ๋‚ด์šฉ๋ฌผ ์ถœ๋ ฅ ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ jsx ์š”์†Œ๋กœ ๋งคํ•‘ํ•  ๋•Œ ๋“ฑ ์‚ฌ์šฉ
โœ‹ ๊ธฐ์กด ๋ฐฐ์—ด ์ˆ˜์ • โŒ, ์ƒˆ ๋ฐฐ์—ด ๋ฐ˜ํ™˜ โญ•๏ธ

const editedHobbies = hobbies.map((item) => item + '!');
const editedHobbies = hobbies.map((item) => ({text: item})); // ๊ฐ์ฒด ๋ฐ˜ํ™˜

๐Ÿ’ก findIndex(), map() ์™ธ์—๋„ find(), filter(), reduce(), concat(), slice(), splice() ๋ฉ”์†Œ๋“œ ๊ธฐ๋Šฅ ์•Œ์•„๋‘๋ฉด ์ข‹์Œ !


โœ… Destructuring

โ€ฃ ๋ฐฐ์—ด ๋ถ„ํ•ด

  • ์œ„์น˜์— ๋”ฐ๋ผ ์›์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฏ€๋กœ ์›ํ•˜๋Š” ์ด๋ฆ„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
const [firstName, lastName] = ['Hal Chalamet', 'Timothee'];

โ€ฃ ๊ฐ์ฒด ๋ถ„ํ•ด

  • ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€์ ธ์˜ค๋ฏ€๋กœ ๋™์ผํ•œ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ
  • ๋ณ„์นญ์ธ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ํ• ๋‹น ๊ฐ€๋Šฅ
const {name: userName, age} = {name: 'bean', age: 26}

โœ… Spread ์—ฐ์‚ฐ์ž

// ๊ฐ ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ด
const hobbies = ['Cooking', 'Sports'];
const newHobbies = ['Reading'];

const mergedHobbies = [...hobbies, ...newHobbies];
console.log(mergedHobbies); // ['Cooking', 'Sports', 'Reading']

โœ… for ... of ... ๋ฌธ

const password = prompt('Your password'); // ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ ๋ฐ›๋Š” ์ฐฝ ํ‘œ์‹œ

const hobbies = ['Cooking', 'Sports'];

// ๋ฐฐ์—ด ์›์†Œ ์ˆœํšŒ
for (const hobby of hobbies) {
	console.log(hobby);
}

// โ€ฃ Cooking
// โ€ฃ Sports

โœ… js๋กœ DOM ์กฐ์ž‘ํ•˜๊ธฐ

const list = document.querySelector("ul");
list.remove();

โœ… ํ•จ์ˆ˜๋ฅผ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ

1๏ธโƒฃ ํ•จ์ˆ˜๋ช…๋งŒ ์ „๋‹ฌ

๋ฏธ๋ฆฌ ์ •์˜๋œ ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฅธ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•  ๋• ์ด๋ฆ„๋งŒ ์ „๋‹ฌํ•˜๋ฉด ํ•จ์ˆ˜ ์ž์ฒด๋ฅผ ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•˜๊ฒŒ ๋œ๋‹ค

function handleTimeout() {
	consoel.log("Time out!");
}

setTimeout(handleTimeout);
// ํ•จ์ˆ˜ ์ž์ฒด๋ฅผ ์ „๋‹ฌํ•  ๋• ํ•จ์ˆ˜๋ช…๋งŒ ์ „๋‹ฌ!
function greeter(greetFn) {
	greetFn();
}

greeter(() => console.log('Hi');

2๏ธโƒฃ ํ•จ์ˆ˜ ์ž์ฒด ์ „๋‹ฌ

() ์†Œ๊ด„ํ˜ธ๋ฅผ ํฌํ•จํ•œ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ํ•จ์ˆ˜๊ฐ€ ๋ฐ”๋กœ ์‹คํ–‰๋˜๋ฉฐ, ํ•ด๋‹น ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด ์ „๋‹ฌ๋œ๋‹ค

// ํƒ€์ด๋จธ๊ฐ€ ์„ค์ •๋  ๋•Œ handleTimeout ํ•จ์ˆ˜๊ฐ€ ๋ฐ”๋กœ ์‹คํ–‰๋œ ๋‹ค์Œ
// ์ด ๋•Œ, handleTimeout ๋ฐ˜ํ™˜๊ฐ’์ด ์ „๋‹ฌ๋จ
setTimeout(handleTimeout());

โœ‹ setTimeout() ๋ฉ”์†Œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์„ค์ •์‹œ์—๋Š” ๋ฐ˜ํ™˜๊ฐ’์ด ์•„๋‹Œ ํ•จ์ˆ˜ ์ž์ฒด๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํ•จ์ˆ˜๋ช…๋งŒ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค

setTimeout(handleTimeout, 2000);

// ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ๋•Œ๋„ ์ด๋ฅผ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ
// ์ •์˜๋งŒ ํ•˜๊ณ  ์ •์˜ํ•œ ํ•จ์ˆ˜๋ฅผ setTimeout์— ์ „๋‹ฌํ•  ๋ฟ !
setTimeout(() => {
	console.log('More timing out...');
}, 4000)

โœ… ๊ธฐ๋ณธํ˜• & ์ฐธ์กฐํ˜• ๊ฐ’ ๋น„๊ต

โ€ฃ ๊ธฐ๋ณธํ˜•

e.g. string, number, boolean

  • ๊ธฐ์กด ๊ฐ’ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€ โŒ โ‡’ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ !
let msg = 'Hello!';
msg = 'Hello there!'; // ๋ฎ์–ด์จ์„œ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ์ €์žฅ -> ์ฆ‰, ์ƒˆ๋กœ์šด string ์ƒ์„ฑ

// ์ด๋•Œ ๊ธฐ์กด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ string 'Hello!'๋Š” ์‚ญ์ œ
// => ์ฆ‰, ๋ณ€๊ฒฝ๋˜์–ด string์ด ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด string์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ!!

โ€ฃ ์ฐธ์กฐํ˜•

e.g. object, array

  • ๊ธฐ์กด ๊ฐ’ ์ˆ˜์ • โญ•๏ธ
    โŒž ๋ณ€์ˆ˜์— ๊ฐ’ ์ €์žฅํ•  ๋• ๊ฐ’ ์ž์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ํ•ด๋‹น ๊ฐ’์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ €์žฅ
    โ‡’ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐฐ์—ด์€ ์ˆ˜์ •๋˜์ง€๋งŒ ์ฃผ์†Œ๋Š” ๋ณ€ํ•˜์ง€ ์•Š์Œ

๐Ÿค” const๋กœ ์„ ์–ธ๋œ ๋ฐฐ์—ด์€ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ• ๊นŒ?

๐Ÿ“ข ๊ฒฐ๋ก ์€ YES โญ•๏ธ !!!
๋ณดํ†ต ์•Œ๊ณ  ์žˆ๋Š” ์‚ฌ์‹ค์€ const๋กœ ์„ ์–ธํ•˜๋ฉด ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ๋‹ค
๊ทธ์น˜๋งŒ ์—„๋ฐ€ํžˆ ๋งํ•˜์ž๋ฉด ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค๋Š”๋œป์ด ์•„๋‹ˆ๋ผ ๋ณ€์ˆ˜๋ฅผ ๋ฎ์–ด์“ธ ์ˆ˜ ์—†๋‹ค ๋Š” ๋œป!
โ‡’ ๊ทธ๋‹ˆ๊นŒ ์ฆ‰, ์ƒˆ ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜๋Š” ์—†๋‹ค !!

โœ‹ But! const์— ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ฐ์ฒด๋Š” ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์—‘์„ธ์Šค๋œ๋‹ค๋Š” ์ ์„ ํ™œ์šฉํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์žˆ๋Š” ๊ฐ’์„ ์กฐ์ž‘ํ•  ์ˆ˜๋Š” ์žˆ๋‹ค

const array = ['a', 'b'];
const newArray = []; // ์ƒˆ ๊ฐ’ ํ• ๋‹น์€ ๋ถˆ๊ฐ€
array.push('c'); // ์ด์™€ ๊ฐ™์ด ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ฐฐ์—ด ์ˆ˜์ •์€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์  ์ฃผ์˜!!
// const๋กœ ์„ ์–ธํ•œ ๋ฐฐ์—ด๋„ ์กฐ์ž‘์€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์  ~.~
profile
FE developer

0๊ฐœ์˜ ๋Œ“๊ธ€