06_๋ฐ์ดํฐ ํ์
- ๋ฐ์ดํฐ ํ์ (data type, ์ค์ฌ์ ํ์ ) ์ ๊ฐ์ ์ข ๋ฅ๋ฅผ ๋งํ๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๊ฐ์ ํ์ ์ ๊ฐ๋๋ค.
- ES6์์ ์ ๊ณตํ๋ ๋ฐ์ดํฐ ํ์ ์ 7๊ฐ๋ค.
๊ตฌ๋ถ | ๋ฐ์ดํฐ ํ์ | ์ค๋ช |
---|---|---|
์์ํ์ | number | ์ซ์, ์ ์์ ์ค์ ๊ตฌ๋ถ ์์ด ํ๋์ ์ซ์ ํ์ ๋ง ์กด์ฌ |
boolean | ๋ ผ๋ฆฌ์ ์ฐธ(true) ๊ณผ ๊ฑฐ์ง(false) | |
undefined | var ํค์๋๋ก ์ ์ธ๋ ๋ณ์์ ์๋ฌต์ ์ผ๋ก ํ ๋น๋๋ ๊ฐ | |
null | ๊ฐ์ด ์๋ค๋ ๊ฒ์ ์๋์ ์ผ๋ก ๋ช ์ํ ๋ ์ฌ์ฉํ๋ ๊ฐ | |
symbol | ES6์ ์ถ๊ฐ๋ 7๋ฒ์งธ ํ์ | |
๊ฐ์ฒด ํ์ | ๊ฐ์ฒด, ํจ์, ๋ฐฐ์ด ๋ฑ |
์ซ์ ํ์ ์ ๊ฐ 1 ๊ณผ ๋ฌธ์์ด ํ์ ์ ๊ฐ '1' ์ ์ ํ ๋ค๋ฅธ ๊ฐ์ด๋ค.
- ์์ฑํ ๋ชฉ์ ๊ณผ ์ฉ๋๊ฐ ๋ค๋ฅด๋ค
- ์ซ์๋ ์ฃผ๋ก ์ฐ์ ์ฐ์ฐ์ ์ํด ์์ฑ
- ๋ฌธ์์ด์ ์ฃผ๋ก ํ ์คํธ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ๊ธฐ ์ํด ์์ฑ
- ํ๋ณดํด์ผํ๋ ๋ฉ๋ชจ๋ฆฌ๊ณต๊ฐ์ ํฌ๊ธฐ๋ ๋ค๋ฅด๊ณ
- ์ฝ์ด๋ค์ฌ ํด์ํ๋ ๋ฐฉ์๋ ๋ค๋ฅด๋ค.
6.1 ์ซ์ ํ์ : number
ํ๋์ ์ซ์ ํ์ ๋ง ์กด์ฌ, ๋ชจ๋ ์๋ฅผ ์ค์๋ก ์ฒ๋ฆฌ
- ๋ชจ๋ 10์ง์๋ก ํด์
- ํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ชจ๋ ์๋ฅผ ์ค์๋ก ์ฒ๋ฆฌํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ ํนํ๊ฒ ํ๋์ ์ซ์ ํ์ ๋ง ์กด์ฌ
- C , JAVA ์ ๊ฒฝ์ฐ ์ ์์ ์ค์๋ฅผ ๊ตฌ๋ถํด์ int, long, float, double ๋ฑ๊ณผ ๊ฐ์ด ๋ค์ํ ์ซ์ ํ์ ์ ์ฌ์ฉ ํ๋ค.
- ํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ชจ๋ ์๋ฅผ ์ค์๋ก ์ฒ๋ฆฌํ๋ค.
var integer = 10; // ์ ์
var double = 10.12; // ์ค์
var negative = -20; // ์์ ์ ์
์๋ฐ์คํฌ๋ฆฝํธ๋ 2์ง์, 8์ง์, 16์ง์ ๋ฑ ํํํ๊ธฐ ์ํ ๋ฐ์ดํฐ ํ์ ์ ์ ๊ณตํ์ง ์๊ณ ๋ชจ๋ 10์ง์๋ก ํด์
var binary = 0b01000001; // 2์ง์
var octal = 0o101; // 8์ง์
var hex = 0x41; // 16์ง์
// ํ๊ธฐ๋ฒ๋ง ๋ค๋ฅผ ๋ฟ ๋ชจ๋ ๊ฐ์ ๊ฐ์ด๋ค
console.log(binary); // 65
console.log(octal); // 65
console.log(hex); // 65
console.log(binary === octal); // true
console.log(octal === hex); // true
์ ์๋ก ํ์๋๋ ์ฌ์ค ์ค์๋ฅผ ์๋ฏธ
// ์ซ์ ํ์
์ ๋ชจ๋ ์ค์๋ก ์ฒ๋ฆฌ
console.log(1 === 1.0); // true
์ซ์ ํ์ ์ ์๋ ์ธ ๊ฐ์ง ํน๋ณํ ๊ฐ๋ ํํ ํ ์ ์๋ค.
- Infinity : ์์ ๋ฌดํ๋
- -Infinity : ์์ ๋ฌดํ๋
- NaN : ์ฐ์ ์ฐ์ฐ ๋ถ๊ฐ(not a number)
console.log(10 / 0); // Infinity
console.log(-10 / 0); // -Infinity
console.log(1 * 'String'); // NaN
6.2 ๋ฌธ์์ด ํ์ : string
๋ฌธ์์ด ํ์ ์ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉํ๋ค.
- 0๊ฐ ์ด์์ 16๋นํธ ์ ๋์ฝ๋ ๋ฌธ์(UTF-16)์ ์งํฉ์ผ๋ก ์ ์ธ๊ณ ๋๋ถ๋ถ์ ๋ฌธ์๋ฅผ ํํํ ์ ์๋ค.
- ์์๋ฐ์ดํ(''), ํฐ๋ฐ์ดํฌ(""), ๋๋ ๋ฐฑํฑ(``) ์ผ๋ก ํ ์คํธ๋ฅผ ๊ฐ์ผ๋ค.
- ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํ๊ธฐ๋ฒ์ ์์ ๋ฐ์ดํ๋ฅผ ์ฌ์ฉ
- ์์ ํ์ ์ด๋ฉฐ, ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๊ฐ์ด๋ค.( ๋ฌธ์์ด์ด ์์ฑ๋๋ฉด ๊ทธ ๋ฌธ์์ด์ ๋ณ๊ฒฝํ ์ ์๋ค๋ ์๋ฏธ)
var string;
string = '๋ฌธ์์ด'; // ์์ ๋ฐ์ดํ
string = "๋ฌธ์์ด"; // ํฐ ๋ฐ์ดํ
string = `๋ฌธ์์ด`; // ๋ฐฑํฑ
๋ฌธ์์ด์ ๋ฐ์ดํ๋ก ๊ฐ์ธ๋ ์ด์
- ํค์๋๋ ์๋ณ์ ๊ฐ์ ํ ํฐ๊ณผ ๊ตฌ๋ณํ๊ธฐ ์ํด์๋ค.
- ๋ํ, ์คํ์ด์ค์ ๊ฐ์ ๊ณต๋ฐฑ ๋ฌธ์๋ ํฌํจ์ํฌ ์ ์๋ค.
6.3 ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด
ES6๋ถํฐ ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด์ด๋ผ๊ณ ํ๋ ์๋ก์ด ๋ฌธ์์ด ํ๊ธฐ๋ฒ์ด ๋์ .
- ๋ฉํฐ๋ผ์ธ ๋ฌธ์์ด
- ํํ์ ์ฝ์
- ํ๊ทธ๋ ํ ํ๋ฆฟ
์์ ์ธ ๊ฐ ๋ฑ ํธ๋ฆฌํ ๋ฌธ์์ด ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. - ์ผ๋ฐ์ ์ผ๋ก ๋ฐฑํฑ ์ฌ์ฉ
var template = `Template literal`;
console.log(template); // Template literal
6.3.1 ๋ฉํฐ๋ผ์ธ ๋ฌธ์์ด
- ์ผ๋ฐ ๋ฌธ์์ด ๋ด์์๋ ์ค๋ฐ๊ฟ(๊ฐํ)์ด ํ์ฉ๋์ง ์๋๋ค.
- ๋ฐ๋ผ์ ์ผ๋ฐ ๋ฌธ์์ด ๋ด์์ ์ค๋ฐ๊ฟ ๋ฑ์ ๊ณต๋ฐฑ์ ํํํ๋ ค๋ฉด ๋ฐฑ์ฌ๋์๋ก ์์ํ๋ ์ด์ค์ผ์ดํ ์ํ์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
var str = 'Hello
world.'; / SyntaxError : Invalid or unexpectied token
์ด์ค์ผ์ด์ค ์ํ์ค | ์๋ฏธ |
---|---|
\0 | Null |
\b | ๋ฐฑ์คํ์ด์ค |
\f | ํผ ํผ๋(Form Feed) : ํ๋ฆฐํฐ๋ก ์ถ๋ ฅํ ๊ฒฝ์ฐ ๋ค์ ํ์ด์ง์ ์์ ์ง์ ์ผ๋ก ์ด๋ |
\n | ๊ฐํ(LF,Line Feed) : ๋ค์ ํ์ผ๋ก ์ด๋ |
\r | ๊ฐํ(CR, Carriage Return) : ์ปค์๋ฅผ ์ฒ์์ผ๋ก ์ด๋ |
\t | ํญ(์ํ) |
\v | ํญ(์์ง) |
\uXXXX | ์ ๋์ฝ๋. ์๋ฅผ ๋ค์ด'\u0041'์ 'A', '\uD55c'๋ 'ํ', |
' | ์ ๋ฐ์ดํ |
" | ํฐ ๋ฐ์ดํ |
\ | ๋ฐฑ์ฌ๋์ |
์๋ฅผ ๋ค์ด, ์ค๋ฐ๊ฟ๊ณผ ๋ค์ฌ์ฐ๊ธฐ๊ฐ ํ์ฉ๋ HTML ๋ฌธ์์ด ์๋ ์ฝ๋๋ก ์์ฑํ๋ค.
var template = '<ul>\n\t<li><a href="#">Home</a></li>\n</ul>';
// ์ถ๋ ฅ ๊ฒฐ๊ณผ
<ul>
<li><a href="#">Home</a></li>
</ul>
์ผ๋ฐ ๋ฌธ์์ด๊ณผ ๋ฌ๋ฆฌ ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด ๋ด์์๋ ์ด์ค์ผ์ด์ค ์ํ์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋
์ค๋ฐ๊ฟ์ด ํ์ฉ๋๋ฉฐ, ๋ชจ๋ ๊ณต๋ฐฑ๋ ๊ทธ๋๋ก ์ ์ฉ๋๋ค.
var template = `<ul>
<li><a href="#">Home</a></li>
</ul>`;
6.3.2 ํํ์ ์ฝ์
๋ฌธ์์ด์ ๋ฌธ์์ด ์ฐ์ฐ์ +
๋ฅผ ์ฌ์ฉํด ์ฐ๊ฒฐ ํ ์ ์๋ค.
+
์ฐ์ฐ์๋ ํผ์ฐ์ฐ์ ์ค ํ๋ ์ด์์ด ๋ฌธ์์ด์ธ ๊ฒฝ์ฐ ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์๋ก ๋์ํ๋ค.- ๊ทธ ์ธ์ ๊ฒฝ์ฐ๋ ๋ง์ ์ฐ์ฐ์๋ก ๋์ํ๋ค.
๋ฌธ์์ด ์ฐ์ฐ์ ์ฌ์ฉ ์
var first = 'Ung-mo';
var last = 'Lee';
// ES5 : ๋ฌธ์์ด ์ฐ๊ฒฐ
console.log('My name is' + first + '' + last + '.');
// My name is Ung-mo Lee.
ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด์ ์ฌ์ฉํ๋ฉด
- ํํ์ ์ฝ์ ์ ํตํด ๊ฐ๋จํ ๋ฌธ์์ด์ ์ฝ์ ํ ์ ์๋ค.
- ${} ์ ์ฌ์ฉ
- ์ด๋ฅผ ํตํด ๋ฌธ์์ด ์ฐ์ฐ์๋ณด๋ค ๊ฐ๋ ์ฑ ์ข๊ณ ๊ฐํธํ๊ฒ ๋ฌธ์์ด์ ์กฐํฉํ ์ ์๋ค.
var first = 'Ung-mo';
var last = 'Lee';
// ES6 : ํํ์ ์ฝ์
console.log(`My name is ${first} ${last}.`);
// My name is Ung-mo Lee.
6.4 ๋ถ๋ฆฌ์ธ ํ์
๋ถ๋ฆฌ์ธ ํ์ ์ ๊ฐ์ ๋ ผ๋ฆฌ์ ์ฐธ, ๊ฑฐ์ง์ ๋ํ๋ด๋ true ์ false ๋ฟ์ด๋ค.
var foo = true;
console.log(foo) // true;
foo = false;
console.log(foo) // false;
- ๋ถ๋ฆฌ์ธ ํ์ ์ ์ฐธ๊ณผ ์ง์ผ๋ก ๊ตฌ๋ถ๋๋ ์กฐ๊ฑด๋ฌธ์์ ์์ฃผ ์ฌ์ฉ ํ๋ค.
6.5 undefined ํ์
undefined ํ์ ์ ๊ฐ์ undefined๊ฐ ์ ์ผ
var ํค์๋๋ก ์ ์ธํ ๋ณ์๋ ์๋ฌต์ ์ผ๋ก undefined ๋ก ์ด๊ธฐํ ๋๋ค.
๋ค์ ๋งํด, ๋ณ์ ์ ์ธ์ ์ํด ํ๋ณด๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฒ์ ํ ๋น์ด ์ด๋ค์ง ๋๊น์ง ๋น ์ํ๋ก ๋ด๋ฒ๋ ค๋์ง ์๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด undefined๋ก ์ด๊ธฐํ ํ๋ค.
var foo;
console.log(foo); // undefined
์ด์ฒ๋ผ undefined ๋ ๊ฐ๋ฐ์๊ฐ ์๋์ ์ผ๋ก ํ ๋นํ๊ธฐ ์ํ ๊ฐ์ด ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๋ณ์๋ฅผ ์ด๊ธฐํ ํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ด๋ค.
- ๋ณ์๋ฅผ ์ฐธ์กฐํ์ ๋ undefined ๊ฐ ๋ฐํ ๋๋ค๋ฉด ์ฐธ์กฐํ ๋ณ์๊ฐ ์ ์ธ ์ดํ ๊ฐ์ด ํ ๋น๋ ์ ์๋, ์ฆ ์ด๊ธฐํ๋์ง ์์ ๋ณ์๋ผ๋ ๊ฒ์ ๊ฐํํ ์ ์๋ค.
- ๋ณ์์ ๊ฐ์ด ์๋ค๋ ๊ฒ์ ๋ช ์ํ๊ณ ์ถ์ ๋๋ undefined๋ฅผ ํ ๋นํ๋ ๊ฒ์ด ์๋ null์ ํ ๋น
6.6 null ํ์
null ํ์ ์ ๊ฐ์ null์ด ์ ์ผํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ณํ๋ฏ๋ก null ์ Null, NULL ๋ฑ๊ณผ๋ ๋ค๋ฅด๋ค.
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ null
์ -> ๋ณ์์ ๊ฐ์ด ์๋ค๋ ๊ฒ์ ์๋์ ์ผ๋ก ๋ช
์ ํ ๋ ์ฌ์ฉํ๋ค.
- ๋ณ์์ null ์ ํ ๋นํ๋ ๊ฒ์ ๋ณ์๊ฐ ์ด์ ์ ์ฐธ์กฐํ๋ ๊ฐ์ ๋ ์ด์ ์ฐธ์กฐํ์ง ์๊ฒ ๋ค๋ ์๋ฏธ
- ์ด๋, ์ด์ ์ ํ ๋น๋์ด ์๋ ๊ฐ์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ช ์์ ์ผ๋ก ์ ๊ฑฐ
- ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋๊ตฌ๋ ์ฐธ์กฐํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ํด ๊ฐ๋น์ง ์ฝ๋ ์ ์ ์ํ
var foo = "Lee";
foo = null;
// ์ด์ ์ฐธ์กฐ๋ฅผ ์ ๊ฑฐ, foo๋ ๋ ์ด์ 'Lee'๋ฅผ ์ฐธ์กฐํ์ง ์๋๋ค.
6.7 ์ฌ๋ฒ ํ์
symbol์ ES6์์ ์ถ๊ฐ๋ 7๋ฒ์งธ ํ์ . ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ์์ ํ์ ์ ๊ฐ
- ๋ค๋ฅธ ๊ฐ๊ณผ ์ค๋ณต๋์ง ์๋ ์ ์ผ๋ฌด์ดํ ๊ฐ
- ์ฃผ๋ก ์ด๋ฆ์ด ์ถฉ๋ํ ์ํ์ด ์๋ ๊ฐ์ฒด์ ์ ์ผํ ํ๋กํผํฐ ํค๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ
// ์ฌ๋ฒ ๊ฐ ์์ฑ
var key = Symbol('key');
console.log(typeof key); // symbol
// ๊ฐ์ฒด ์์ฑ
var obj = {};
// ์ด๋ฆ์ด ์ถฉ๋ํ ์ํ์ด ์๋ ์ ์ผ๋ฌด์ดํ ๊ฐ์ธ ์ฌ๋ฒ์ ํ๋กํผํฐ ํค๋ก ์ฌ์ฉ
obj[key] = 'value';
console.log(obj[key]); // value;
6.8 ๊ฐ์ฒด ํ์
- ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐ์ดํฐ ํ์ ์ ์์ํ์ ๊ณผ ๊ฐ์ฒดํ์ ์ผ๋ก ๋ถ๋ฅํ๋ ์ด์ ๋ ์์ํ์ ๊ณผ ๊ฐ์ฒดํ์ ์ด ๊ทผ๋ณธ์ ์ผ๋ก ๋ค๋ฅด๋ค๋ ์๋ฏธ.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด ๊ธฐ๋ฐ์ ์ธ์ด์ด๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด๋ฃจ๊ณ ์๋ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ด ๊ฐ์ฒด๋ผ๋ ๊ฒ.
- ์ง๊ธ๊น์ง์ 6๊ฐ์ง ๋ฐ์ดํฐ ํ์ ์ด์ธ์ ๊ฐ์ ๋ชจ๋ ๊ฐ์ฒด ํ์
6.9 ๋ฐ์ดํฐ ํ์ ์ ํ์์ฑ
๋ฐ์ดํฐ ํ์ ์ด ํ์ํ ์ด์ ?
- ๋ฐ์ดํฐ ํ์ ์ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ณด์ ์ฐธ์กฐ
- ๋ฐ์ดํฐ ํ์ ์ ์ํ ๊ฐ์ ํด์
6.9.1 ๋ฐ์ดํฐ ํ์ ์ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ณด์ ์ฐธ์กฐ
- ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ ์ฐธ์กฐ ํ ์ ์์ด์ผ ํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ ์ฅํ๋ ค๋ฉด ๋จผ์ ํ๋ณดํด์ผ ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์
- ๋ช ๋ฐ์ดํธ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉํด์ผ ๋ญ๋น์ ์์ค ์์ด ๊ฐ์ ์ ์ฅํ ์ ์๋ ์ง ์์์ผ ํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ ์ฅํ๋ ค๋ฉด ๋จผ์ ํ๋ณดํด์ผ ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์
var score = 100;
๋ง์ฝ ์์ ์ฝ๋๊ฐ ์คํ๋๋ฉด, ์ปดํจํฐ๋ ์ซ์ ๊ฐ 100์ ์ ์ฅํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ณดํ ๋ค์,
ํ๋ณด๋ ๋ฉ๋ชจ๋ฆฌ์ ์ซ์ ๊ฐ 100์ 2์ง์๋ก ์ ์ฅํ๋ค.
-> ์ด๋ฌํ ์ฒ๋ฆฌ๋ฅผ ํ๋ ค๋ฉด ์ซ์ ๊ฐ์ ์ ์ฅํ ๋ ํ๋ณดํด์ผ ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํฌ๊ธฐ๋ฅผ ์์์ผ ํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ฐ์ดํฐ ํ์
. ์ฆ, ๊ฐ์ ์ข
๋ฅ์ ๋ฐ๋ผ ์ ํด์ง ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ณด ํ๋ค.
-> ์ฆ, ๋ณ์์ ํ ๋น๋๋ ๊ฐ์ ๋ฐ์ดํฐ ํ์
์ ๋ฐ๋ผ ํ๋ณดํด์ผ ํ ๊ณต๊ฐ์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ค.
6.9.2 ๋ฐ์ดํฐ ํ์ ์ ์ํ ๊ฐ์ ํด์
- ๋ชจ๋ ๊ฐ์ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ์ง๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ์ 2์ง์ ์ฆ, ๋นํธ์ ๋์ด๋ก ์ ์ฅ.
- ๋ฉ๋ชจ๋ฆฌ์์ ์ฝ์ด ๋ค์ธ 2์ง์๋ฅผ ์ด๋ป๊ฒ ํด์ํ๋๋?
-> ๋ฉ๋ชจ๋ฆฌ์ 2์ง์์ 01000001์ ์ซ์๋ก ํด์ํ๋ฉด 65, ๋ฌธ์์ด๋ก ํด์ํ๋ฉด 'A'
-> ๋ฐ๋ผ์, ์์ ๋ค์ด์จ ๋ณ์์ ํ์ ์ ๋ณด๊ณ ํด์ํ๋ค.
์ ๋ฆฌ
- ๊ฐ์ ์ ์ฅํ ๋ ํ๋ณดํด์ผ ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํฌ๊ธฐ ๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด
- ๊ฐ์ ์ฐธ์กฐํ ๋ ํ ๋ฒ์ ์ฝ์ด ๋ค์ด์ผ ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํฌ๊ธฐ ๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด
- ๋ฉ๋ชจ๋ฆฌ์์ ์ฝ์ด ๋ค์ธ 2์ง์๋ฅผ ์ด๋ป๊ฒ ํด์ํ ์ง ๊ฒฐ์ ํ๊ธฐ ์ํด
6.10.1 ๋์ ํ์ ์ธ์ด์ ์ ์ ํ์ ์ธ์ด
- C๋ JAVA ๊ฐ์ ์ ์ ํ์
์ธ์ด ๋ ๋ณ์๋ฅผ ์ ์ธํ ๋ ๋ณ์์ ํ ๋นํ ์ ์๋ ๊ฐ์ ์ข
๋ฅ
-> ๋ฐ์ดํฐ ํ์ ์ ์ฌ์ ์ ์ ์ธํด์ผ ํ๋ค.
-> ์ด๋ฅผ ๋ช ์์ ํ์ ์ ์ธ ์ด๋ผ ํ๋ค.
// c ๋ณ์์๋ 1๋ฐ์ดํธ ์ ์ ํ์
์ ๊ฐ(-128 ~ 127)๋ง ํ ๋น ํ ์ ์๋ค.
char c;
- ์ ์ ํ์
์ธ์ด๋ ์ปดํ์ผ ์์ ์ ํ์
์ฒดํฌ(์ ์ธํ ๋ฐ์ดํฐ ํ์
์ ๋ง๋ ๊ฐ์ ํ ๋นํ๋์ง ๊ฒ์ฌํ๋ ์ฒ๋ฆฌ)๋ฅผ ์ํ
-> ๋ง์ฝ ํ์ ์ฒดํฌ๋ฅผ ํต๊ณผํ์ง ๋ชปํ๋ค๋ฉด ์๋ฌ๋ฅผ ๋ฐ์์ํค๊ณ ํ๋ก๊ทธ๋จ์ ์คํ ์์ฒด๋ฅผ ๋ง๋๋ค.
-> ํ์ ์ ์ผ๊ด์ฑ์ ๊ฐ์ ํจ์ผ๋ก์จ ๋์ฑ ์์ ์ ์ธ ์ฝ๋์ ๊ตฌํ์ ํตํด ๋ฐํ์์ ๋ฐ์ํ๋ ์๋ฌ๋ฅผ ์ค์ธ๋ค. - JavaScript ๋ ์ ์ ํ์
์ธ์ด์ ๋ค๋ฅด๊ฒ ๋ณ์๋ฅผ ์ ์ธ ํ ๋ ํ์
์ ์ ์ธํ์ง ์๋๋ค.
-> ๋ค๋ง var, let, const ํค์๋๋ฅผ ์ฌ์ฉํด ๋ณ์๋ฅผ ์ ์ธํ ๋ฟ์ด๋ค.
-> ์ ์ ์ธ์ด์ ๊ฐ์ด ๋ฏธ๋ฆฌ ์ ์ธํ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ๋ง ํ ๋นํ ์ ์๋ ๊ฒ์ด ์๋, ์ด๋ ํ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ์ด๋ผ๋ ์์ ๋กญ๊ฒ ํ ๋น์ด ๊ฐ๋ฅ
-> ๋ณ์์ ๊ฐ์ ํ ๋นํ๋ ์์ ์ ๋ณ์์ ํ์ ์ด ๋์ ์ผ๋ก ๊ฒฐ์
-> ๋ณ์์ ํ์ ์ ์ธ์ ๋ ์ง ์์ ๋กญ๊ฒ ๋ณ๊ฒฝ ๊ฐ๋ฅ
-> ๋์ ํ์ ์ธ์ด
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ณ์๋ ์ ์ธ์ด ์๋ ํ ๋น์ ์ํด ํ์ ์ด ๊ฒฐ์ (ํ์ ์ถ๋ก (type inference))๋๊ณ , ์ฌํ ๋น์ ์ํด ๋ณ์์ ํ์ ์ ์ธ์ ๋ ์ง ๋์ ์ผ๋ก ๋ณํ ์ ์๋ค.
6.10.2 ๋์ ํ์ ์ธ์ด์ ๋ณ์
๋์ ํ์
์ธ์ด๋ ๋ณ์์ ์ด๋ค ๋ฐ์ดํฐ ํ์
์ ๊ฐ์ด๋ผ๋ ์์ ๋กญ๊ฒ ํ ๋นํ ์ ์๋ค.
ํ์ง๋ง, ํธ๋ฆฌํจ์ ์ด๋ฉด์๋ ์ํ์ด ๋ฐ๋ฅธ๋ค.
๋ชจ๋ ์ํํธ์จ์ด ์ํคํ
์ฒ๋ ํธ๋ ์ด๋์คํ(trade-off) ๊ฐ ์กด์ฌํ๋ฉฐ,
๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ํฉํ ์ ํํ(silver bullet)์ ์๋ฏ์ด ๋์ ํ์
์ธ์ด ๋ํ ๊ตฌ์กฐ์ ์ธ ๋จ์ ์ด ์๋ค
ํธ๋ ์ด๋์คํ(trade-off): ๋ ๊ฐ์ ์ ์ฑ ์ด๋ ๋ชฉํ ์ค ํ๋๋ฅผ ๋ฌ์ฑํ๋ ค๊ณ ํ๋ฉด ๋ค๋ฅธ ๋ชฉํ์ ๋ฌ์ฑ์ด ๋ฆ์ด์ง๊ณ ๋ ํฌ์๋๋ ๋ชจ์์ ๊ด๊ณ๋ฅผ ์๋ฏธ. ex )์ค์ ๋ฅ ์ ์ค์ด๋ฉด ๋ฌผ๊ฐ๊ฐ ์์นํ๊ณ , ๋ฌผ๊ฐ๋ฅผ ์์ ์ํค๋ฉด ์ค์ ๋ฅ ์ด ๋์์ง๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ๋ฐ์์ ์๋์ ๊ด๊ณ์์ด ์์ง์ ์ํด ์๋ฌต์ ์ผ๋ก ํ์ ์ด ์๋์ผ๋ก ๋ณํ ๋๊ธฐ๋ ํ๋ค.
- ๊ฒฐ๊ตญ, ๋์ ํ์ ์ธ์ด๋ ์ ์ฐ์ฑ์ ๋์ง๋ง ์ ๋ขฐ์ฑ์ ๋จ์ด์ง๋ค.
์ข์ ์ฝ๋๋ ?
- ์คํด์ ์ฌ์ง๊ฐ ์๋ ์ฝ๋
- ์คํด๋ ์ปค๋ฎค๋์ผ์ด์
์ ์ด๋ ต๊ฒ ํ๋ ๋ํ์ ์ธ ์์ธ
-> ์์ฐ์ฑ์ ๋จ์ด๋จ๋ฆฌ๊ณ , ํ์ ์ฌ๊ธฐ๊น์ง ์ ํ ์ํจ๋ค. - ๋ฐ๋ผ์, ์ฌ๋์ด ์ดํดํ ์ ์๋ ์ฝ๋, ๊ฐ๋ ์ฑ์ด ์ข์ ์ฝ๋๊ฐ ์ข์ ์ฝ๋๋ค.
'๐ Book-Talk > ๋ชจ๋ JS Deep Dive' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive_์ ์ด๋ฌธ (0) | 2022.11.10 |
---|---|
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive_์ฐ์ฐ์ (0) | 2022.11.10 |
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive_ํํ์๊ณผ ๋ฌธ (0) | 2022.11.10 |
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive_๋ณ์ (0) | 2022.11.09 |
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive_์๋ฐ์คํฌ๋ฆฝํธ๋? (0) | 2022.11.09 |