๐๐ปโโ๏ธ ์ด 7๊ฐ์ ์๋ฃํ์ด Data Type์ผ๋ก ์ ์๋์ด ์๋ค!
JavaScript๋ ์ ๋ง ๋คํํ๋..... number
ํ๋๋ง์ผ๋ก ์ซ์ ๋ฐ์ดํฐ๋ ๋ค ๋์ด๋ค!!
์ฌ๋ฏธ๋ก ๋ณด๋ C, Java ์ธ์ด์์์ ์ซ์ data types
<C์ธ์ด์์์ ์ซ์ data types>
<JAVA์ธ์ด์์์ ์ซ์ data types>
โ ์ ์์ธ์ง ์์์ธ์ง, ์ด๋ค ์ฌ์ด์ฆ์ ๋ฐ์ดํฐ๋ฅผ ๋ด์์ง ์ฌ์ ์ ๋ฏธ๋ฆฌ ์๊ฐํด์ ๊ฑฐ๊ธฐ์ ๋ง๋ ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ใ ใทใท....
์ฐ๋ฆฌ์ ๊ฐJS๋ก ๋์์์...
let a = 12;
let b = 1.2;
JavsScript์์๋ ์ฌ์ง์ด number
๋ผ๊ณ ๋ฐ๋ก ์์ฑํ์ง ์๊ณ , ๋ฐ๋ก let
์ ์ฌ์ฉํด๋ ๋๋ค!
โ ์๋ฐ ์คํฌ๋ฆฝํธ์์๋ ํ์
์ด ๋ค์ด๋๋ฏนํ๊ฒ ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์, let a
๋ฑ ์ ์ธ ํ ๋ฐ๋ก ์ซ์๋ง ์ ์ด์ฃผ๋ฉด ๋~
const count = 17; // integer number(์ ์)
const size = 17.1; // decimal number(์์)
console.log(`value: ${count}, type: ${typeof count}`);
console.log(`value: ${size}, type: ${typeof size}`);
์ด๋ ๊ฒ number ํ๋๋ง์ผ๋ก ์ ์๋ ์์์ ์๊ด์์ด ๋ชจ๋ type:number๋ก ์ถ๋ ฅ๋๋ค. (์ํธํ๋ค!)
์ถํ์ ๋ฐฐ์ฐ๊ฒ ๋ TypeScript ์์๋?
let a: number = 12; let b: number = 1.2;
number ๋ฅผ ๋ช ํํ ๋ช ์ํด์ผํ๊ธด ํ์ง๋ง, number ํ๋๋ก ์ถฉ๋ถํ๋ค!
const infinity = 1 / 0;
const negativeInfinity = -1 / 0;
const nAn = 'not a number' / 2;
console.log(infinity);
console.log(negativeInfinity);
console.log(nAn);
NaN
์ JavaScript์ ๊ฐ๋ค ์ค ์ ์ผํ๊ฒ ์๊ธฐ ์์ ๊ณผ ๊ฐ์ง ์์ ๊ฐ์ด๋ค!
๋ฐ๋ผ์, ์ด๋ค ๊ฐ์ด NaN์ธ์ง ํ๋ณํ๊ธฐ ์ํด์๋ ์ผ๋ฐ์ ์ธ ๋น๊ต ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋๊ณ , ๋์Number.isNaN
๋๋Object.is
ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.const thisIsNan = NaN; thisIsNan === NaN; // false = ๋น๊ต ์ฐ์ฐ์๋ก๋ ํ๋ณ์ด ๋ถ๊ฐ๋ฅํ๋ค. Number.isNaN(thisIsNan); // true Object.is(thisIsNan, NaN); // true // ์ด ํจ์๋ค์ ์ฌ์ฉํด์ผ ํ๋ค!
>๐๐ปโโ๏ธ ๋ง๊ฐ! bigInt ~~(์ค์ํ๊ฑด ์๋)~~<br />
JavaScript์์์ ์ซ์๋ (-2^^53) ~ (2^^53) ๊น์ง๋ง ํํ์ด ๊ฐ๋ฅํ๋ฐ, ์ต๊ทผ์ bigint ๋ผ๋ type์ด ์ถ๊ฐ ๋์๋ค!
```javascript
const bigInt = 12345678901234567890123456789012345678901234567890n;
console.log(`value: ${binInt}. type: ${typeof binInt}`);
Number.MAX_SAFE_INTEGER;
โ ์ด๋ ๊ฒ ์ซ์ ๋ค์ n
๋ง ๋ถ์ฌ์ฃผ๋ฉด ๋! ์ ๋๋ก ์ ๋์ค๋์ง ํ์ธํด๋ณผ๊น??
type: bigint๋ก ์ ๋์จ๋ค!
๊ทธ์น๋ง ์๋
์์ ๋์จ์ง ์ผ๋ง ์๋ ๋
์์ด๋ผ์ ์์ง ๋ง์ ๋ธ๋ผ์ฐ์ ์์ ์ง์์ด ๋์ง ์๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ์ ํ๋ฉด์ ์ด๋ ๊ฒ ํฐ ๋ฒ์์ ์ซ์๋ฅผ ์ธ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ด์ ํํ ์ฐ์ด์ง ์์๋ฏ~
const key = 'k';
const YunoYunho = 'passion';
const greeting = 'you know?' + YunoYunho;
console.log(`value: ${greeting}, type: ${typeof greeting}`);
const helloY = `hi ${YunoYunho}!`; //template literals (string)
console.log(`value: ${helloY}, type: ${typeof helloY}`);
ํ๊ฐ์ ๊ธ์, ์ฌ๋ฌ๊ฐ์ ๊ธ์ ๋ชจ๋ string
ํ๋๋ก ๋!
์ผ๋ฐ string๊ณผ ๋ณ์๋ฅผ + ๊ธฐํธ๋ก ๋ถ์ฌ์ ์์ฑํ ์๋ ์๋ค.
('you know?' + YunoYunho;
โ you know?passion์ผ๋ก ์ถ๋ ฅ!)
template literals (template string)
ES2015์์ ๋์
๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ด๋ค. ๋ฐฑํฑ` ๊ธฐํธ์ ์ํ๋ string๊ณผ ${๋ณ์}! ๋ฅผ ์ ์ผ๋ฉด, ๋ณ์์ ๊ฐ์ด ์๋์ผ๋ก ์ ํ์ ๋์จ๋ค.
console.log(`value: ${helloY}, type: ${typeof helloY}`);
console.log('value: ' + helloY + ' type: ' + typeof helloY);
๐ก Escape Sequence
ํน์ ๋ฌธ์๋ฅผ ๋ฌธ์์ด์ ๋ฃ๊ฑฐ๋, ํน์ ์ง์ ์ ๋์ฝ๋ ์ฝ๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํด์ ๋ฌธ์๋ฅผ ๋ฃ์ ์ ์๋๋ก ํด์ค๋ค.
ํ๊ธฐ๋ฒ | ๋ฌธ์ |
---|---|
\' | ํ๋ฐ์ดํ |
\" | ์๋ฐ์ดํ |
\ | ๋ฐฑ์ฌ๋์ |
\n | ๋ผ์ธ ํผ๋ (ํ ์คํธ์ ํ์ค์ด ๋๋จ์ ํ์ํ๋ ๋ฌธ์) |
\r | ์บ๋ฆฌ์ง ๋ฆฌํด (ํ ์คํธ์ ํ์ค์ด ๋๋จ์ ํ์ํ๋ ๋ฌธ์) |
\t | ํญ |
\uXXXX | ์ ๋์ฝ๋ ๋ฌธ์ |
\u{X...} | ์ ๋์ฝ๋ ๋ฌธ์ |
$ | ๋ฌ๋ฌ |
` | ๋ฐฑํฑ |
console.log('lorem \'ipsum\''); // lorem 'ipsum'
console.log('line\nfeed'); // line(์ค๋ฐ๊ฟ)feed
console.log('\uD55C\uAE00'); // ํ๊ธ
console.log('\u{1F435}'); // ๐ต
์ด๋ฐ ์์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅํ๊ธด ํ๋ฐ ์ ๋งํ๊ฑด template literals ์ฌ์ฉํ์!!
// ๋ฌธ์์ด์ ๊ธธ์ด ์์๋ด๊ธฐ
'hello'.length; // 5
// ์ฌ๋ฌ ๋ฌธ์์ด ์ฐ๊ฒฐํ๊ธฐ
'hello'.concat('fun', 'javascript'); // 'hellofunjavascript'
// ํน์ ๋ฌธ์์ด์ ๋ฐ๋ณตํ๋ ์ ๋ฌธ์์ด ์์ฑํ๊ธฐ
'*'.repeat(3); // '***'
// ํน์ ๋ฌธ์์ด์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ๊ธฐ
'hello javascript'.includes('hello'); // true
'hello javascript'.startsWith('he'); // true
'hello javascript'.endsWith('ript'); // true
'hello javascript'.indexOf('java'); // 6
// ๋ฌธ์์ด์ ํน์ ๋ถ๋ถ์ ๋ฐ๊พผ ์ ๋ฌธ์์ด ์์ฑํ๊ธฐ
'hello javascript'.replace('java', 'type'); // 'hello typescript'
// ๋ฌธ์์ด์ ์ผ๋ถ๋ฅผ ์๋ผ๋ธ ์ ๋ฌธ์์ด ์์ฑํ๊ธฐ
'hello'.slice(2, 4); // 'll'
// ์ข์ฐ ๊ณต๋ฐฑ๋ฌธ์๋ฅผ ์ ๊ฑฐํ ์ ๋ฌธ์์ด ์์ฑํ๊ธฐ
' hello '.trim(); // 'hello'
' hello '.trimLeft(); // 'hello '
' hello '.trimRight(); // ' hello'
// ์ข์ฐ ๊ณต๋ฐฑ๋ฌธ์๋ฅผ ์ถ๊ฐํ ์ ๋ฌธ์์ด ์์ฑํ๊ธฐ
'hello'.padStart(8); // ' hello'
'hello'.padEnd(8); // 'hello '
// ๋ฌธ์์ด์ ํน์ ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ผ ์ ๋ฐฐ์ด ์์ฑํ๊ธฐ
'hello!fun!javavscript'.split('!'); // ['hello', 'fun', 'javascript']
'hello'.split(''); // ['h', 'e', 'l', 'l', 'o']
// ๋ชจ๋ ๋ฌธ์๋ฅผ ์๋ฌธ์, ํน์ ๋๋ฌธ์๋ก ๋ณํํ ์ ๋ฌธ์์ด ์์ฑํ๊ธฐ
'Hello JavaScript'.toLowerCase(); // 'hello javascript'
'Hello JavaScript'.toUpperCase(); // 'HELLO JAVASCRIPT'
์ฐธ๊ณผ ๊ฑฐ์ง์ ๊ตฌ๋ถํ๋ ํจ์!
false
0, null, undefined, NaN, ' ' (๋น ๋ฌธ์์ด)
( ' ' = ๋น์ด์ ธ ์๋ string )
true
any other value
(0์ด ์๋ number๋ string๋ฑ์ ๋ชจ๋ ์ฐธ!)
const canRead = true; //์ด๋ ๊ฒ ๋ฐ๋ก true๋ผ๊ณ ๋ช
์ํด์ค๋ ๋๊ณ
const test = 3 < 1; //์ด๋ฐ ๊ฐ์ ๋ฃ์ด๋ ๊ณ์ฐ ํ ์ฐธ,๊ฑฐ์ง์ ํ๊ฐํ์ฌ false์ผ๋ก ์ธ์๋๋ค.
let nothing = null;
๋ ํ ํ ๋น empty ๊ฐ์ด์ผ! ๋ผ๊ณ ๊ฐ์ด ๋ช ํํ๊ฒ ์ง์ ๋์์
typeof
๋ก ํ์ธํด๋ณด๋ฉดobject
๋ผ๊ณ ๋์จ๋ค.
console.log(typeof null);
// object
null์ ๋ง๊ทธ๋๋ก ์๋ฌด๊ฒ๋ ์๋ ๋น ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฅดํค๊ณ ์์ด์ object๋ผ๊ณ ๋์ค๋๊ฒ!let nothing = null; console.log(typeof nothing); // ์ด๋ฐ ๊ฒฝ์ฐ์๋ object ๋ผ๊ณ ์ถ๋ ฅ๋จ!
let x;
let x = undefined;
์ ์ธ์ ๋์์ง๋ง, ์๋ฌด ๊ฐ์ด ๋ค์ด๊ฐ์์ง ์์
undefined;
์ด๋ผ๊ณ ๋ช
์ํด์ค๋ ๋๊ณ , ์ฒซ๋ฒ์งธ์ฒ๋ผ ์๋ฌด ๊ฐ๋ ๋ฃ์ง ์์๋ undefined๋ก ์ธ์ํ๋ค.
<br/ >
๊ณ ์ ํ ์๋ณ์๊ฐ ํ์ํ๊ฑฐ๋ ๋์๋ค๋ฐ์ ์ผ๋ก ์ผ์ด๋ ์ ์๋ ์ฝ๋์์ ์ฐ์ ์์๋ฅผ ์ฃผ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
๐๐ปโโ๏ธ string์ผ๋ก๋ ์๋ณ์๋ฅผ ์ง์ ํ ์ ์๋๋ฐ, ์ด ๊ฒฝ์ฐ์๋ ๋ค๋ฅธ ๋ชจ๋์ด๋ ๋ค๋ฅธ ํ์ผ์์ ๋์ผํ string๋ฅผ ์ฌ์ฉํ๋ฉด, ๋์ผํ ์๋ณ์๋ก ๊ฐ์ฃผํ๋ค.
๐๐ปโโ๏ธ ๊ทธ๋ฌ๋ symbol์ ๋์ผํ ๊ฐ์ ๋ฃ์๋๋ผ๋, ๋์ ๋ค๋ฅธ ์๋ณ์๋ก ์ธ์๋๋ค.
const symbol1 = Symbol('id'); const symbol2 = Symbol('id'); console.log(symbol1 === symbol2); //false
๋์ผํ symbol์ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด
symbol.for
๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋์ ๊ฐ์ ์๋ณ์๋ก ์ธ์๋๋ค.const symbol1 = Symbol.for('id'); const symbol2 = Symbol.for('id'); console.log(symbol1 === symbol2); //true
console.log(value: ${symbol1}, type: ${typeof symbol1}`);`
symbol์ ๋ฐ๋ก ์ถ๋ ฅํ๋ฉด Error๊ฐ ๋จ๊ฒ ๋๋ฏ๋ก,
console.log(value: ${symbol1.description}, type: ${typeof symbol1}`);`
์ด๋ ๊ฒ value์์ .description
์ ์ด์ฉํด์ string์ผ๋ก ๋ณํํ์ฌ ์ถ๋ ฅํด์ผ ํ๋ค!
โ๏ธsingle item๋ค์ ์ฌ๋ฌ๊ฐ ๋ฌถ์ด์ ํ๋์ box๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ๋ง๋ค์ด์ฃผ๋ ๊ฒ
โ๏ธObject์ ํฌ๊ธฐ๋ ๋๋ฌด ์ปค์ ํ๋์ ๋ฉ๋ชจ๋ฆฌ์ ๋ด๊ธฐ์ง ์๊ณ , Object๋ฅผ ๊ฐ๋ฅดํค๋ ref ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค.
โ ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ const solmi
์์ ์ด๋ฆ,๋์ด ๋ฑ ์ฌ๋ฌ๊ฐ์ง ์์๋ค์ ๋ฃ์ผ๋ฉด solmi
๋ ์์ ํ ์ ์์ง๋ง, ๊ทธ ์์ ๋ค์ด๊ฐ ์ด๋ฆ, ๋์ด๋ฑ์ ๊ฐ์ ์์ ํ ์ ์๋ค!
const dayOfWeek = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
console.log(dayOfWeek[2]); //Wed๊ฐ ์ถ๋ ฅ!
Array๋ฅผ ์ ์ธํ๋ ค๋ฉด [ ]
(๋๊ดํธ)๋ก ๊ฐ์ธ์ฃผ๋ฉด ๋๋ค!
โ
dayOfWeek[2]
๋ผ๊ณ ํ๋๋ฐ 2๋ฒ์งธ์ ์๋Tue
๊ฐ ์๋Wed
๊ฐ ์ถ๋ ฅ๋๋ ์ด์ ?
๋ฐฐ์ด์ ๋ฒํธ๊ฐ ๋ฉ๊ฒจ์ง index๋ฅผ ๊ฐ์ง๋ค.
(๋์ค์ ๋์ฌ ๊ฐ์ฒด๋ ์ด๋ฌํ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๋๋ฐ, ๊ฐ์ฒด์ ์ฐจ์ด์ ์ ๋ฐฐ์ด์ ์ซ์ ์ธ๋ฑ์ค๋ฅผ, ๊ฐ์ฒด๋ ์ด๋ฆ์ผ๋ก ๋ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๋ค.)
๋ฐฐ์ด์์ ์ฌ์ฉํ๋ ์ซ์ ์ธ๋ฑ์ค๋ ๋ฌด์กฐ๊ฑด 0๋ฒ ๋ถํฐ ์์ํ๋ค.
์ฆ,Mon
๋ index 0๋ฒ์งธ =index[0]
์ ์์นํ ๊ฒ์ด๊ณ ,Tue
๋ index 1๋ฒ์งธ =index[1]
์ ์์นํ๊ฒ!
const hi = "Hello!"
const solmi = ["solmi", 26, true, hi,
{name:"solmi", gender:26}];
console.log(solmi); //solmi, 26, true, Hello! ์ถ๋ ฅ
Array๋ ๋จ์ํ string๋ฟ ์๋๋ผ, boolean, number, ๋ฏธ๋ฆฌ ์ ์ธํ๋ ๋ณ์,Object ๋ค๊น์ง ๋ชจ๋ ๋ฌถ์ ์ ์๋ค!
โ ์ด๋ ๊ฒ ๋ฐฐ์ด ์์ ๋ค์ด์๋ ๊ฐ๋ค์ ์์(element, item, etc)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
console.log(solmi[3]); //Hello!๋ผ๋ ๊ฐ์ ์ป๊ณ ์ถ๋ค๋ฉด ์ด๋ ๊ฒ ์์น๋ฅผ ๋ฃ์ด์ค์ผ ํ๋ค
๋ฌถ์ ๋ฐ์ดํฐ๋ค์ ๋จ์ ๋์ด๋ ๋ฟ์ด๋ฉฐ, ํน์ ์ ๋ณด๋ฅผ ์ป๊ณ ์ถ๋ค๋ฉด ๊ทธ ์์น๊ฐ์ ๊ธฐ์ตํด์ผ ํ๋ค.
ex) DB์์ ๊ฐ์ ธ์จ ๋ฆฌ์คํธ ๋ฐ์ดํฐ ๋ฑ์ ์ถ๊ฐํ ๋ ์ฌ์ฉ
const info = {
name: "solmi",
age: 26,
gender: "female",
sheLikeCoffee: true,
favFood: ["chicken", "tteokbokki", "jjapaghetti"], //Array๋ object๋ก ๋ฌถ์ ์ ์๋ค
};
console.log(info.gender); //female์ด ์ถ๋ ฅ๋๋ค
info.age = 27; //info Object๋ const๋ก ๋ฌถ์ฌ์์ง๋ง, info๋ฅผ ์ด๋ฃจ๋ ref ๋ค์ ๊ฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์๊ธฐ ๋๋ฌธ์ age๊ฐ ์์ ์ด ๊ฐ๋ฅํ๋ค.
console.log(info.age); //27์ด ์ถ๋ ฅ๋๋ค
Object๋ฅผ ์ ์ธํ๊ธฐ ์ํด์๋ { }
(์ปฌ๋ฆฌ ๋ธ๋ผ์ผ)์ผ๋ก ๊ฐ์ธ์ฃผ๋ฉด ๋๋ค!
(Array์ฒ๋ผ ์ฌ๋ฌ๊ฐ์ง ์์, ๋ณ์, Array๋ฅผ ๋ฃ์ ์ ์๊ณ , ์ฌ์ง์ด Array ์์ ์๋ Object ์์์๋ Array ๋ฑ๋ฑ๋ ๋ฃ์ ์ ์์ผ๋ฉฐ,(๋ฌดํ์ผ๋ก ์ฆ๊ธฐ๊ธฐ ๊ฐ๋ฅ) Array์ ๋ฌ๋ฆฌ, ํน์ ์ ๋ณด์ ์์น๊ฐ์ ๊ธฐ์ตํ์ง ์์๋ ๋๋ค!)
ex) Object ์์๋ Array๋ ๋ค์ด๊ฐ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ํฉ์ณ์ ๋ง๋ค์ด์ผ ํ ๋ ์ฌ์ฉํ๋ค.