์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ์ฝํ
- ์ฝ๋ ํฌ๋ฉง
- icecandidate
- React
- ํ๋ก๊ทธ๋๋จธ์ค
- DP
- TypeScript
- ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- custom hook
- Node.js
- ์ฝ๋ฉํ ์คํธ
- ์นด์นด์ค์ฑ์ฉ
- ๋ฆฌ๋์ค ํดํท
- router v6
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ถ์คํธ์บ ํ์น๋ชจ๋ฐ์ผ
- ๋์ ๊ณํ๋ฒ
- ๊ณผ์ ํ ์คํธ
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฐฑ์ค
- ์ด๋ถํ์
- ๋ธ๋ฃจํธํฌ์ค
- ์ด๋ฏธ์ง ์์
- Redux toolkit
- ์นด์นด์ค
- js
- ๋ถ์คํธ์ปจํผ๋ฐ์ค
- JavaScript
- svgํ์ผ ๋ค๋ฃจ๊ธฐ
- ๋๋๊ทธ ์ด๋ฒคํธ
- Today
- Total
๐ฅ dev-ruby
[์๋ฐ์คํฌ๋ฆฝํธ] ๊ธฐ์ด๋ถํฐ ์์ํ๊ธฐ | ๋ณ์, ์๋ฃํ, ๊ฐ์ฒด, ๋ฐฐ์ด, ํจ์ ๋ณธ๋ฌธ
[์๋ฐ์คํฌ๋ฆฝํธ] ๊ธฐ์ด๋ถํฐ ์์ํ๊ธฐ | ๋ณ์, ์๋ฃํ, ๊ฐ์ฒด, ๋ฐฐ์ด, ํจ์
ruby_s 2021. 12. 20. 14:04์ธํฐ๋ท์ผ๋ก ๊ณต๋ถํด์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ ๊ธฐ์ด๋ถํฐ ์ ๋๋ก ์์ํ๋ ค๊ณ ํ๋ค.
๋ชจ๋ฅด๋๊ฒ ๋๋ฌด ๋ง์์ ์๊ณ ๋ฆฌ์ฆ ํ ๋๋ ์ฐพ์๋ณด๋ฉด์ ํ๊ฒ ๋ผ์ ๊ธฐ์ด ๋ค์ง๊ธฐ๋ถํฐ ์์..
1. ๋ณ์
ES6 ์ด์ ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ณ์๋ฅผ ์ ์ธํ๋ค.
var name = "Alberto";
ES6 ๋ถํฐ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ๋ ์ถ๊ฐ๋๋ค.
let name = "Alberto";
const name = "Alberto";
์ฌ๊ธฐ์, 3๊ฐ์ง ํค์๋์ ์ฐจ์ด์ ์ ๋ํด ์์๋ณผ๊ฑฐ๋ค.
const ํค์๋๋ก ์์ฑ๋ ๋ณ์๋ ์์์ด๋ค. ๊ฐ์ ๋ฎ์ด ์ธ ์ ์๋ค.
var์ let์ ๊ฐ์ ๋ฎ์ด ์ธ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ, ์ฐ๋ฆฌ๋ ์ฃผ๋ก let์ ์ฌ์ฉํด์ผํ๋ค. ๊ทธ ์ด์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์๋ ๋ฐฉ์์์ ๋ ์์๋ณผ ๊ฒ์ด๋ค.
1.1 ๋ณ์ ๋ช ๋ช ๋ฒ
๋ณ์ ์ด๋ฆ์ ์ง๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
- ์บ๋ฉ ์ผ์ด์ค (camelCase)
- ์ฒซ๋ฒ์งธ ๋จ์ด ๋ค์์ ์ด์ด์ง๋ ๊ฐ ๋จ์ด์ ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ํ๋ค.
- ์ค๋ค์ดํฌ ์ผ์ด์ค (snake_case)
- ๊ฐ ๋จ์ด ์ฌ์ด๋ฅผ ๋ฐ์ค๋ก ์๋๋ค.
๋ ์ค ํ๋๋ฅผ ์ ํด์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๊ฒ์ด ์ข๋ค.
// ๋์ ์
let lastloggedin = "";
// ์ข์ ์
let lastLoggedIn = ""; // ์บ๋ฉ ์ผ์ด์ค
let last_logged_in = ""; // ์ค๋ค์ดํฌ ์ผ์ด์ค
2. ์๋ฃํ
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์ ์ธ์ด์ด๋ค. ์ฆ, ์ ์ ์ธ์ด์ ๋ฌ๋ฆฌ ๋ณ์๋ฅผ ์ ์ํ ๋ ์๋ฃํ์ ์ ์ํ ํ์๊ฐ ์๋ค.
์ฒ์์๋ ํธํด๋ณด์ด์ง๋ง, ๋๊ท๋ชจ ํ๋ก์ ํธ์์๋ ๋ฌธ์ ์ ์์ธ์ด ๋ ์ ์๋ค.
์ฌ๊ธฐ์, ํ์ ์คํฌ๋ฆฝํธ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์๊ฒฉํ ์๋ฃํ์ ์ค์ํ๋ ๊ฐํ์ ์ธ์ด๋ก ํ๋ฐ๊ฟ ์ํจ ์ธ์ด์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์๋ ์ด 7๊ฐ์ ์๋ฃํ์ด ์๋ค.
6๊ฐ๋ ์์ ์๋ฃํ, 1๊ฐ๋ ๊ฐ์ฒด๋ค.
์์์๋ฃํ
: ๊ฐ์ฒด๊ฐ ์๋ ์๋ฃํ์ผ๋ก, ๋ฉ์๋๋ฅผ ๊ฐ์ง์ง ์๋๋ค.
- string : ๋ฌธ์์ด
- number : ์ซ์
- boolean : ๋ถ๋ฆฌ์ธ
- null : ๋ (๊ฐ์ด ์์)
- undefined : ์ ์๋์ง ์์ ๊ฐ
- symbol : ์ฌ๋ฒ, ๊ณ ์ ํ๊ณ ๋ณ๊ฒฝํ ์ ์๋ ๊ฐ (ES6์์ ์ถ๊ฐ๋๋ค.)
๊ฐ์ฒด
: ์ฌ๋ฌ ์์ฑ์ ๋ชจ์์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ค.
์์) ์ฐจ์ ์์ฑ์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉํ๋ ๊ฐ์ฒด
const car = {
wheels : 4,
color: "red",
};
wheels, color ๋ key, 4, "red"๋ ๊ฐ์ด ๋๋ค.
ํค์ ์๋ฃํ์ string์ด๋ค.
๊ฐ์ ์๋ฃํ์ ๋ชจ๋ ๋ ์ ์๋ค. ํจ์๋ ๊ฐ๋ฅํ๋ค.
const car = {
wheels : 4,
color: "red",
drive : function(){
console.log("wroom")
},
};
๊ฐ์ฒด car์์ driveํจ์๋ฅผ ํธ์ถํ ์ ์๋ค.
console.log(Object.keys(car)[0]); // wheels
console.log(typeof Object.keys(car)[0]); // string
car.drive(); // wroom
๋น ๊ฐ์ฒด ์์ฑํ๊ธฐ
: ๋น ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์๋ค.
const car = new Object();
const car = {};
๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ฐฉ๋ฒ์ธ ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ด ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
์ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ๋น์ด์๋ ์ ๊ฐ์ฒด car์ ์ ์์ฑ์ ์ถ๊ฐํ ์ ์๋ค.
car.color = 'red';
console.log(car); // {color: "red"}
๊ฐ์ฒด์ ์์ฑ์ ์ ๊ทผํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ
1. ์ ํ๊ธฐ๋ฒ
car.wheels
2. ๋๊ดํธ ํ๊ธฐ๋ฒ
car['color']
๋ ๋ฐฉ๋ฒ์ ์ฐจ์ด์
์ฌ๋ฌ ๋จ์ด๋ก ์ด๋ฃจ์ด์ง ์์ฑ์ ๊ฒฝ์ฐ ์ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
const car = {
wheels : 4,
color: "red",
"goes fast": true,
};
car.goes fast // error
car['goes fast'] // true
๋, ์๋ก์ด ๋ณ์๋ก ๊ฐ์ฒด์ ์์ฑ์ ์ ๊ทผํ๋ ค๊ณ ํ ์, ์ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
const car = {
ferrari: "cali",
};
const key = "ferrari";
car.key // undefined
car['key'] // undefined
car[key] // cali
๋ณ์์ ์ ์ฅ๋ ํค๋ฅผ ํตํด ์ ๊ทผํ ์ ๋๊ดํธ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํด์ผ ํ๋ค.
๊ฐ์ฒด์ ๋ณต์ฌ
: ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ ๋๋ ์ฐธ์กฐ ๋ฐฉ์์ด ์ฐ์ธ๋ค.
let car = {
color: 'red',
};
let secondCar = car;
์ฌ๊ธฐ์ secondCar๋ ๊ทธ ์์ฒด๋ก ๊ฐ์ฒด๊ฐ ์๋๋ผ car์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ํ๋ธ๋ค.
์ฆ, car์ ์ฃผ์๋ฅผ ์ ์ฅํ๋ค.
car๋ฅผ ์์ ํ๋ฉด secondCar๋ ์์ ๋๋ค. ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์.
๋ ๊ฐ์ฒด๋ฅผ ๋น๊ตํด๋ณด๋ฉด, ๋ ๊ฐ์ฒด๊ฐ ๋์ผํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
console.log(car == secondCar); // true
console.log(car === secondCar); // true
๋์ผํ ์ฃผ์๋ง๊ณ , ๋ณต์ฌ๋ณธ์ ๋ง๋๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ Object.assign()์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.
const car = {
color: 'red',
}
const secondCar = Object.assign({}, car);
์ด๋ ๊ฒ ํ๋ฉด car๋ฅผ ์ ๋ฐ์ดํธํด๋ secondCar์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
์ฒซ ๋ฒ์งธ ์ธ์๋ ๋ณต์ฌ๋ณธ์ ํด๋นํ๋ ๊ฐ์ฒด์ด๊ณ , ๋ ๋ฒ์งธ ์ธ์๋ ์๋ณธ์ ํด๋นํ๋ ๊ฐ์ฒด์ด๋ค.
๋ฐฐ์ด
: ์์๋๋ก ๊ฐ์ ์ ์ฅํ๋ ๊ฐ์ฒด, ์์ ์๋ฃํ์ด ์๋ ๊ฐ์ฒด !!
ํญ๋ชฉ์ผ๋ก๋ง ์ด๋ฃจ์ด์ง ๋ชฉ๋ก๋ง ์ ์ฅํ ๋๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ํ์ ์์ด ๋ฐฐ์ด์ ์ฌ์ฉํ๋ฉด ๋๋ค.
const fruit = ['apple', 'banana', 'orange'];
๋ฐฐ์ด์ ๊ฐ ํญ๋ชฉ์ ์ ๊ทผํ ๋๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
fruit[0]
fruit[1]
๋ฐฐ์ด์ ๋ํด ํธ์ถํ ์ ์๋ ๋ฉ์๋๊ฐ ์๋ค. ๋ช ๊ฐ์ง๋ง ์ผ๋จ ์ดํด๋ณด์.
const fruit = ['apple', 'banana', 'orange'];
// ๋ฐฐ์ด์ ๋์ ์ ๊ฐ์ ์ถ๊ฐ
fruit.push('pear');
// ๋ฐฐ์ด์ ์์์ ์ ๊ฐ์ ์ถ๊ฐ
fruit.unshift('melon');
// ๋ฐฐ์ด์ ๋์์ ๊ฐ ํ๋ ์ ๊ฑฐ
fruit.pop();
// ๋ฐฐ์ด์ ์์์์ ๊ฐ ํ๋ ์ ๊ฑฐ
fruit.shift();
typeof๋ก ์๋ฃํ ํ์ธํ๊ธฐ
const str = "hello";
typeof(str); // string
typeof(null); // object
์๋ null์ ์๋ฃํ์ object๋ก ๋์จ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฒซ ๋ฒ์งธ ๊ตฌํ์์ ๋ฐ์ํ๋ ๋ฒ๊ทธ๋ผ๊ณ ํ๋ค.
3. ํจ์
ํจ์์ ์
function greet(name){
console.log(name);
}
greet("Alberto");
์ฌ๊ธฐ์, ์ธ์์ ์์ ์๋ฃํ์ด ์ ๋ฌ๋ ๊ฒฝ์ฐ ํด๋น ๊ฐ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ญ์ ์ผ๋ก ๋ฐ์๋์ง ์๋๋ค.
ํ์ง๋ง, ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์ ๋ฌํ ๊ฒฝ์ฐ๋ ์ฐธ์กฐ ํํ๋ก ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ์๋ณธ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์๋๋ค.
ํจ์ ํํ์
const greeter = function greet(name){
console.log(name);
}
greeter("Alberto");
greeter๋ผ๋ const์ greet ํจ์๋ฅผ ํ ๋นํ๋ค.
์ต๋ช ํจ์
์ด ํจ์ ํํ์์ ์ฌ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ์ต๋ช ํจ์๋ฅผ ๋ง๋ค ์ ์๋ค.
const greeter = function(name) {
console.log(name);
}
greeter("Alberto");
ํ์ดํ ํจ์
ES6์์ ๋์ ๋ ํ์ดํ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ๋ง๋ค ์ ์๋ค.
const greeter = (name) => {
console.log(name);
}
greeter("Alberto");
ํ์ดํ ํจ์์ ํน์ง์ ๋์ค์ ๋ค์ ์ดํด๋ณด์ฅ
4. ํจ์ ์ค์ฝํ์ this ํค์๋์ ์ดํด
์ค์ฝํ
: ๋ณ์์ ์ค์ฝํ๋ ๋ณ์๊ฐ ์ ๊ทผํ ์ ์๋ ์์น๋ฅผ ์ ์ดํ๋ค.
์ ์ญ ์ค์ฝํ : ์ฝ๋์ ์ด๋ ๊ณณ์์๋ ์ ๊ทผ ๊ฐ๋ฅ
๋ธ๋ก ์ค์ฝํ : ๋ณ์๊ฐ ์ ์ธ๋ ๋ธ๋ก ๋ด๋ถ์์๋ง ์ ๊ทผํ ์ ์์
* ๋ธ๋ก : ํจ์, ๋ฃจํ, ์ค๊ดํธ๋ก ๊ตฌ๋ถ๋๋ ์์ญ
var
๋ธ๋ก ์ค์ฝํ๋ฅผ ๊ฐ์ง์ง ์๋๋ค. ๋ฐ๋ผ์, ๋ธ๋ก ์ธ๋ถ์์๋ ์ ๊ทผํ ์ ์๋ค.
let, const
๋ธ๋ก ์ค์ฝํ ์ธ๋ถ์์ ํด๋น ๋ณ์์ ์ ๊ทผํ ์ ์๋ค. ํด๋น ๋ณ์๊ฐ ์ ์ธ๋ ์์น์ ํด๋นํ๋ ๋ธ๋ก ์ค์ฝํ ๋ด์์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
this ํค์๋
const myCar = {
color: 'red',
logColor: function(){
console.log(this.color);
}
}
// 1๋ฒ
const unboundGetColor = myCar.logColor;
console.log("1", unboundGetColor());
// 2๋ฒ
const boundGetColor = unboundGetColor.bind(myCar);
console.log("3", boundGetColor());
1๋ฒ์ ์ ์ญ์ผ๋ก ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ์ ์ญ ๋ฒ์์ this๊ฐ ํธ์ถ๋๋ค.
๋ฐ๋ผ์, ๊ทธ ๊ฐ์ Window ๊ฐ์ฒด๊ฐ ๋๊ณ , ์ด ๊ฐ์ฒด์๋ color๊ฐ ์์ผ๋ฏ๋ก ๊ฒฐ๊ณผ๋ undefined๊ฐ ๋๋ค.
1. .bind()
2๋ฒ์ this์ ๊ฐ์ ์๋์ผ๋ก ์ค์ ํ๊ณ ์ .bind() ๋ฅผ ์ฌ์ฉํ๋ค.
.bind()๋ฅผ ์ฌ์ฉํ๋ฉด boundGetColor์ this ํค์๋๊ฐ ๊ดํธ ์์ ๊ฐ์ฒด์ธ myCar๋ฅผ ์ฐธ์กฐํจ์ ์ ์ ์๋ค.
2. .call()
: ์ธ์์ ๋ชฉ๋ก์ ๋ฐ๋๋ค.
function Car(maker, color){
this.carMaker = maker;
this.carColor = color;
}
function MyCar(maker, color){
Car.call(this, maker, color);
this.age = 5;
}
const myNewCar = new MyCar('bmw', 'red');
console.log(myNewCar.carMaker); // bmw
console.log(myNewCar.carColor); // red
.call() ์ MyCar ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ์ฌ this.carMaker๊ฐ MyCar์ ์ธ์๋ก ์ ๋ฌํ maker๊ฐ ๋๋๋ก ํ๋ค.
3. .apply()
: ํ๋์ ์ธ์ ๋ฐฐ์ด์ ๋ฐ๋๋ค.
function Car(maker, color){
this.carMaker = maker;
this.carColor = color;
}
function MyCar(maker, color){
Car.apply(this, [maker, color]);
this.age = 5;
}
const myNewCar = new MyCar('bmw', 'red');
console.log(myNewCar.carMaker); // bmw
console.log(myNewCar.carColor); // red
.apply() ๋ ์ธ์ ๋ชฉ๋ก์ด ๋ด๊ธด ๋ฐฐ์ด์ ์ธ์๋ก ๋ฐ๋๋ค.