console.log("my" + "cat");
console.log("1" + 2); //์ซ์๊ฐ ๋ฌธ์์ด๋ก ๋ณํ๋์ด ์ถ๋ ฅ๋๋ค.
console.log(`string literals; 1 + 2 = ${1 + 2}`); //์ค๊ฐ์ ์ค์ ๋ฐ๊พธ๊ฑฐ๋, ํน์ ๊ธฐํธ๋ฅผ ์ด์ฉํด๋ ๋ฌธ์์ด๋ก ๊ทธ๋๋ก ์ถ๋ ฅ
๋ฌธ์๋ฅผ + ๊ธฐํธ๋ฅผ ์ด์ฉํด์ ์ฐ์์ผ๋ก ์ถ๋ ฅํ ์ ์๋ค.
console.log(1 + 1); //add
console.log(1 - 1); //subtract
console.log(1 / 1); //divide
console.log(1 * 1); //multiply
console.log(1 % 1); //remainder (๋๋จธ์ง)
console.log(1 ** 1); //exponentiation (๊ฑฐ๋ญ์ ๊ณฑ)
๋ง๊ฐ! ํผ์ผํธ(%) ๊ตฌํ๊ธฐ ๊ณต์!!
์ ์ฒด๊ฐ(x)์์ ์ผ๋ถ๊ฐ(y)์ ๋ช ํผ์ผํธ?y / x * 100
ex)
20 / 55 * 100
// 36.363636......
์ ์ฒด๊ฐ(x)์์ ๋ช ํผ์ผํธ๋ ์ผ๋ง?x * ํผ์ผํธ / 100
ex)
55 * 20 / 100
// 11
๋ง๊ฐ! ๋ถ๋ ์์์ (Floating Point) vs ๊ณ ์ ์์์ (Fixed Point)
๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ-์ฝ์์์ ํด๋น๊ฐ์ ์ ๋ ฅํด๋ณด์!0.1 + 0.2;
๋น์ฐํ 0.3์ด ๋์ค๊ฒ ์ง? ํ๊ณ Enter๋ฅผ ๋๋ฌ๋ณด๋ฉด...๋ ์ฉ~
โ ์ปดํจํฐ๋ ์์๋ฅผ 2์ง์๋ฅผ ์ด์ฉํด ์ ์ฅํ๊ธฐ ๋๋ฌธ์, ์์0.1 + 0.2; ๊ฐ์ 10์ง์ ์์๋ฅผ ์ ํํ ๋ค๋ฃฐ ์ ์๋ค.
์ฐ๋ฆฌ๋ 0.1 ์ด๋ผ๊ณ ์ ๋ ฅํ์ง๋ง, ์ปดํจํฐ ๋ด๋ถ์์ 2์ง์๋ก ๋ณํํ์ฌ ๋ฐ์๋ค์ด๋ ๊ณผ์ ์์ ์ฝ๊ฐ์ ์ค์ฐจ๊ฐ ๋ฐ์ํ๋๋ฐ, ์ด๋ฅผ ๋ฐ์ฌ๋ฆผ ์ค์ฐจ(rounding error)๋ผ๊ณ ํ๋ค.
โ ์ ์ด๋ฐ ์ค์ฐจ๋ฅผ ๊ทธ๋ฅ ๋๋๊ฑธ๊น?
์ปดํจํฐ์ ์ ์ฅ์ฉ๋์ ํ์ ๋์ด ์๊ณ 0๊ณผ 1๋ฐ์ ๋ค๋ฃจ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์, 10์ง์ ์์๋ฅผ ์์ฃผ ๋น ๋ฅด๊ฒ ๊ณ์ฐํ๊ธฐ ์ํด. ์ฆ, ๊ณ์ฐ ์์ ํจ์จ์ฑ์ ์ํด ์ด๋ ๊ฒ ์ค๊ณํ ๊ฒ!
(p.s - ๊ธ์ต ๋ถ์ผ์ฒ๋ผ ์กฐ๊ธ์ ์ค์ฐจ๋ ํ์ฉ๋์ง ์๋ ๋ถ์ผ์์๋ ์ ํํ ์ฐ์ฐ์ ์ํ ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.)
pre increment/decrement
let counter = 2; const preIncrement = ++counter;
๋ณ์ ์์ ++๊ธฐํธ๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด
pre Increment
๋ฅผ ์ฌ์ฉํ ์ ์๋ค.counter = counter + 1; //counter์ ๊ฐ์ 1 ์ฆ๊ฐํ ํ์ preIncrement = counter; //preIncrement ๋ณ์์ counter์ ๊ฐ์ ํ ๋น
pre Increment
๋ ์์ ์ฝ๋์ ๋์ผํ ์ญํ ์ ํ๋ค!const preDecrement = --counter;
๋ง์ด๋์ค - ์ญํ ์ ํ๋
pre Decrement
๋ ๊ฐ์ ๋ฐฉ์!
post incement/decrement
let counter = 2; const postIncrement = counter++;
๋ณ์ ๋ค์ ++๊ธฐํธ๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด
post Increment
๋ฅผ ์ฌ์ฉํ ์ ์๋ค.preIncrement = counter; //postIncrement ๋ณ์์ counter์ ๊ฐ์ ํ ๋นํ ํ์ counter = counter + 1; //counter์ ๊ฐ์ 1 ์ฆ๊ฐ
post Increment
๋ ์์ ์ฝ๋์ ๋์ผํ ์ญํ ์ ํ๋ค!const postDecrement = counter--;
๋ง์ด๋์ค - ์ญํ ์ ํ๋
post Decrement
๋ ๊ฐ์ ๋ฐฉ์!
let x = 3;
let y = 6;
x += y; // 9 (x = x + y; (x๊ฐ์ x + y๋ก ์์ ))
x -= y; // 3 (x = x - y;)
x *= y; // 18 (x = x * y;)
x /= y; // 3 (x = x / y;)
x += y;
โ x = x + y;
๋ฅผ ๋ปํ๋ค.
console.log(10 < 6); // less than
console.log(10 <= 6); // less than or equal
console.log(10 > 6); // greater than
console.log(10 >= 6); // greater than or equal
const value1 = false;
const value2 = 4 < 2; //4 < 2๋ ํ๋ฆฐ ๊ฐ์ผ๋ฏ๋ก, ๊ฐ์ flase
console.log(`or: ${value1 || value2 || check()}`);
function check() {
for{
๋์ถฉ ์์ฒญ ๋ณต์กํ ํจ์
}
return true; //์๋ฌดํผ ๊ฒฐ๊ตญ์ true๋ฅผ return ํ๋ ์์ด!
}
true
๋ฉด true
๊ฐ ์ถ๋ ฅconsole.log(`or: ${value1 && value2 && check()}`);
function check() {
for{
๋์ถฉ ์์ฒญ ๋ณต์กํ ํจ์
}
return true; //์๋ฌดํผ ๊ฒฐ๊ตญ์ true๋ฅผ return ํ๋ ์์ด!
}
false
๋ฉด false
๊ฐ ์ถ๋ ฅif (age > 65 || age < 21 && res === "ํ๊ตญ")
๐คท๐ปโโ๏ธ ๋ ๋ค๋ก ํด์๋ ์ ์๋๋ฐ... ์ปดํจํฐ๋ ์ด๋ป๊ฒ ํด์ํ ๊น?
โ ์ปดํจํฐ๋ ์ผ์ชฝ์์ ๋ถํฐ ํด์ํ๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ง๋ ํด์์ด๋ค!
๐ฉ๐ปโ๐ซ ์ด๋ ๊ฒ ์ฌ๋ฌ๊ฐ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ๋ฐ๋์ ๊ดํธ๋ก ๋ฌถ์ด์ค ๊ฒ!!
1๋ฒ์ผ๋ก ํด์ํ๊ธธ ์ํ๋ค๋ฉด :
if (age > 65 || (age < 21 && res === "ํ๊ตญ"))
2๋ฒ์ผ๋ก ํด์ํ๊ธธ ์ํ๋ค๋ฉด :
if ((age > 65 || age < 21) && res === "ํ๊ตญ")
๐ ์ค์ point!!!!
or
์ฐ์ฐ์๋ ์์ฐจ์ ์ผ๋ก ์ฐ์ฐํ๋ค๊ฐ ํ๋๋ผ๋ true๊ฐ ๋์ค๋ฉด ์ฐ์ฐ์ ๋ฉ์ถ๊ณ ๋ฐ๋ก true๋ฅผ ์ถ๋ ฅํ๋ค!
(and
๋ ํ๋๋ผ๋ false๊ฐ ๋์ค๋ฉด ๋ฐ๋ก false ์ถ๋ ฅ)
EX) or ์ฐ์ฐ์์ ๋ง์ฝconst value1 = true;
๋ผ๋ฉด, ๋ค์๊น์ง ๊ฐ ํ์๋ ์์ด ๋ฐ๋ก true๋ฅผ ์ถ๋ ฅํ๊ณ ๋๋ด๋ฒ๋ฆผ!
โ ๊ทธ๋ฌ๋ฏ๋ก ์ฐ์ฐ์ด ๋ง๊ณ ๋ณต์กํ ํจ์๋, extension ๊ฐ์๊ฑธ ์์ ๋๊ฒ๋๋ฉด ๊ณ์ฐํ๋๋ผ ์๊ฐ ๋ค ๊ฐ๋น..... ์ฌํํ value ๊ฐ์ ์ ์ผ ์์ ๋๊ณ , ๋ณต์กํ ํจ์ ๋ฑ์ ์ ์ผ ๋ค์ ๋๋๊ฒ ์ข๋ค!!!
๐ or๊ณผ and๋ฅผ ์ด์ฉํด์ ๊ฐํธํด์ null check๋ฅผ ํ ์ ์๋ค!
๐๐ปโโ๏ธ null check๋?
null
์ด๋undefined
์ ์ด๋ค ๋ณ์์๋, ์ด๋ค ์์ฑ์๋ ๋ค์ด์์ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ์งค ๋๋ ํญ์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ์ ์๋ ๊ฒฝ์ฐ (์ฆnull
ํน์undefined
์ธ ๊ฒฝ์ฐ)๋ฅผ ๋ชจ๋ ๊ณ ๋ คํด์ ์ฝ๋๋ฅผ ์ง์ผ ํ ํ์๊ฐ ์๋ค. ์ด๋ ์ด๋ค ๊ฐ์ดnull
ํน์undefined
์ธ์ง ํ์ธํ๋ ์์ ์ null check ๋ผ๊ณ ํ๋ค!function printIfNotNull(input) { if (input !== null **&&** input !== undefined) { console.log(input); } }
๋งค๋ฒ ์ด๋ ๊ฒ ๊ธธ๊ฒ ์์ฑํ ํ์๋ ์๊ณ , ๋ณดํต์
input !== null && input !== undefined;
๋ฑ์ผ๋ก ์ค์ฌ์ ๋ง์ด ์ฌ์ฉํ๋ค.
(null๊ณผ undefined์ ๊ณต๋ถํ๋ค ๋ณด๋ ์๊ฐ๋ณด๋ค ๋ด์ฉ์ด ๊ธธ์ด์ ๋ค์์ ๋ฐ๋ก ์ ๋ฆฌํด์ ์ฌ๋ฆฌ๋๊ฑธ๋ก!!!์ ๋ ๊ท์ฐฎ์๊ฑฐ ์๋)
const value1 = false;
console.log(!value1); //value์ ๊ฐ์ด true๊ฐ ๋๋ค.
๊ฐ์ ๋ฐ๋๋ก ๋ฐ๊ฟ์ค๋ค.
const stringFive = "5";
const numberFive = 5;
console.log(stringFive == numberFive); //true
console.log(stringFive != numberFive); //false
console.log(stringFive === numberFive); //false
console.log(stringFive !== numberFive); //true
ํผ์ฐ์ฐ์์ type์ด ๋ค๋ฅผ ๊ฒฝ์ฐ, type์ ๋ณํํ ํ ๋น๊ต
stringFive
์ numberFive
๋ type์ ๋ค๋ฅด์ง๋ง, type์ ๋ฌด์ํ๊ณ ํ์ธํ๋ฉด ๊ฐ์ ๊ฐ๊ธฐ๋๋ฌธ์ == ๋ก ๊ฒ์ฌ์ true๊ฐ ๋์จ๋ค.
null check ํ ๋
==
,!=
๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
ํผ์ฐ์ฐ์์ type์ด ๋ค๋ฅผ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด false๋ฅผ ๋ฐํ
stringFive
์ numberFive
๋ type์ ๋ฌด์ํ๋ฉด ๊ฐ์ ๊ฐ์ด์ง๋ง, type์ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ === ๋ก ๊ฒ์ฌ์ false๊ฐ ๋์จ๋ค.
ํ๋ก๊ทธ๋๋ฐ ์ค์ Equality๋ก ๊ฒ์ฌํ ์ผ์ด ์๊ธฐ๋ฉด === ์ฌ์ฉํ๋๊ฑธ ๊ถ์ฅํ๋ค! (null check ์ ์ธ)
๋ ์ธ์๊ฐ ์ ๋ง๋ก ๊ฐ์ ๊ฐ์ธ์ง ๊ฒ์ฌํ๋ค.
์๋์ ๋ ์์ธ๋ฅผ ์ ์ธํ๊ณ ๋ ===
์ ๋๊ฐ์ด ๋์ํ๋ค.
Object.is(NaN, NaN); // true (=== ์์๋ false)
Object.is(0, -0); // false (=== ์์๋ true)
const solmi1 = {name: "solmi"};
const solmi2 = {name: "solmi"};
const solmi3 = solmi1;
์ด 3๊ฐ์ object๋ ๋๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์์ง๋ง, ์ค์ ๋ฉ๋ชจ๋ฆฌ์๋ solmi1, solmi2๋ ๊ฐ๊ฐ ๋ค๋ฅธ reference์ ์ ์ฅ๋์ด ์๊ณ , solmi3์ solmi1๊ณผ ๊ฐ์ reference์ ์ ์ฅ๋์ด์๋ ์ํ๋ค!
์ฌ๊ธฐ์ Equality๋ก ๊ฒ์ฌํด๋ณด๋ฉด ์ด๋ค ๊ฐ์ด ์ถ๋ ฅ๋ ๊น?
console.log(solmi1 == solmi2); //false console.log(solmi1 === solmi2); //false console.log(solmi1 === solmi3); //true
solmi1๊ณผ solmi2๋ ๊ฐ๊ฐ ๋ค๋ฅธ reference์ ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์,
===
๋ ์ปค๋ ==
๋ flase!
ํ์ง๋ง solmi1๊ณผ solmi3์ ๊ฐ์ reference์ ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์, true!
์กฐ๊ธ ๋ฐ๋ ค๋ ๊ด์ฐฎ์ง์ !