1. String(๋ฌธ์์ด) concatenation (์ฐ์)
console.log('my'+'cat');
: + ๊ธฐํธ๋ฅผ ์ด์ฉํ ๋ฌธ์์ด์ ํฉํด์ ์๋ก์ด ๋ฌธ์๋ฅผ ๋ง๋ค ์ ์๋ค.
console.log('1'+2);
: ๋ฌธ์์ด์ ์ซ์ ๋ํ๋ฉด ์ซ์๊ฐ ๋ฌธ์์ด์ด ๋ผ ํฉ์ณ์ง
console.log(`string literals: 1 + 2 = ${1 + 2}`);
: ๋นฝํฑ ๊ธฐํธ(``) ํ์ฉํด์ string literals๋ ๋ง๋ค ์ ์๋๋ฐ $์ด์ฉํ๋ฉด ๋ณ์ ๊ฐ์ ๊ณ์ฐํด์ string์ผ๋ก ํฌํจํด์ ๋ฌธ์์ด์ ๋ง๋ค๊ฒ๋๋ค.
๐string literals์ ์ฅ์ :
- ์ค๋ฐ๊ฟ ํ๊ฑฐ๋ ํน์๊ธฐํธ์ธ ์ฑ๊ธ์ฝํธ('')๋ฅผ ์ฌ์ฉํด๋ ๊ทธ๋๋ก ์ถ๋ ฅ๋จ
ex)
''''
1 + 2 = ${1 + 2}`);
+ console.log('ellie's book');
-์ฑ๊ธ์ฝ๋๋ก ๋ฌธ์์ด ๋ง๋ค๋ฉด ์ฑ๊ธ์ฝํธ๊ฐ ์ธ์๋์งX. ์ด๋ด ๊ฒฝ์ฐ ๋ฐฑ์ฌ๋ฌ์๋ฅผ ์ด์ฉํด์ผ ์ ๋๋ก ํ์๋จ.
ex)
console.log('ellie\'s book');
console.log('ellie\'s book');
console.log('ellie's /nbook');
์ค๋ฐ๊ฟํ ๋๋ \n
ex)
console.log('ellie's /nbook');
\t ํญ
ex)
console.log('ellie's /n\tbook');
===>์ด๋ฐ ํน์๊ธฐํธ๋ ๋ฐ๋ก ๊ฒ์ํ๊ธฐ. ์์๋ง๋๊ฒ.
2. Numeric operators (์ซ์์ฐ์ฐ์)
: ์ซ์๋ฅผ ์ฐ์ฐํ ์ ์์.
console.log(1 + 1); //add
console.log(1 - 1); // substract
console.log(1 / 1); // divide
console.log(1 * 1); // multiply
console.log(5 % 2); // remainder
console.log(2 ** 3); // exponentiation
3. Increment(++) and decrement(--) operators
:์ฆ๊ฐ(++)์ ๊ฐ์(--) ์ฐ์ฐ์
let counter = 2;
const preIncrement = ++counter;
// counter = counter + 1;
// preIncrement = counter;
- counter๋ผ๋ ๋ณ์๊ฐ ์์ผ๋ฉด ๋ณ์์์ ++๊ธฐํธ๋ฅผ ์์ ๋ถ์ฌ์ฃผ๋ ๊ฒ์ ์๋ // ๋ด์ฉ๊ณผ ๋์ผํจ.
- ๋ณ์(counter) ์์ ++๋ฅผ ๋ถ์ด๋ ๊ฒ์ ๋ณ์(counter)์ 1์ ๋ํ ํ ๊ทธ ๋ณ์(counter)์ ๊ฐ์ด ํด๋น ๋ณ์(preIncrement) ์ ๊ฐ์ด๋ผ๋ ๋ป.
const postIncrement = counter++;
// postIncrement = counter;
// counter = counter + 1;
: postIncrement ๋ณ์ ๋ค์ ++๋ฅผ ๋ถ์ด๋ฉด counter ๋ณ์๋ฅผ postIncrement์ ํ ๋นํ ํ counter ๋ณ์์ 1์ ๋ํ๋ ๊ฒ.
- counter ๋ค์์ ++๊ธฐํธ๋ฅผ ๋ถ์ด๋ฉด ๋ณ์ ๊ฐ(counter = 2, ์ฌ๊ธฐ์ ++counter ํด์ 3์ด ์ฆ๊ฐ๋ ์ํ์ด๋ฏ๋ก) 3์ post๋ณ์์ ํ ๋นํ๋ค์ counter์ ๊ฐ์ 1 ์ฆ๊ฐ์ํจ๋ค. ๊ทธ ๋ค์ ์นด์ดํฐ์ ๊ฐ์ด 1 ์ฆ๊ฐํ๋๊น ์นด์ดํฐ์ ๊ฐ์ 4.
===> -- ๋ ๊ฐ์ ์๋ฆฌ์ด๋ค.
4. Assignment operators
: ํ ๋น ์ฐ์ฐ์
// 4. Assignment operators
let x = 3;
let y = 6;
x += y; // x = x + y;
x -= y; // x = x - y;
x *= y; // x = x * y;
x /= y; // x = x / y;
- ์ค๋ณต๋๋ x๊ฐ์ ํ๋๋ก ํํํ๊ธฐ ์ํด +=, -=, *=..... ๋ฑ์ผ๋ก ํํ
5. Comparison operators
:๋น๊ต์ฐ์ฐ์
// 5. Comparison operators
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
6. Logical operators โ
: ๋ ผ๋ฆฌ ์ฐ์ฐ์
: or, and, not
// 6. Logical operators : || (or), && (and), ! (not)
const value1 = false;
const value2 = 4 <2;
< || (or) >
: value๋ expretion๋ค ์ค ํ๋๋ผ๋ true๋ฉด true๋ก ๋๋ ์ฐ์ฐ์.
: ํจ์ check ๋ ์ธ๋ฐ ์์ด ์๊ฐ๋ญ๋น ํ ํ ๊ฒฐ๊ตญ, true๋ฅผ returnํ๋ค.
// || (or), finds the first truthy value
console.log(`or: ${value1 || value2 || check()}`);
function check(){
for (let i = 0; i < 10; i++){
//wasting time
console.log('๐ญ');
}
}
์ค์ POINT!
๐ ์์์ true๊ฐ ๋์ค๋ฉด ๋ฉ์ถ๋ค. ํ๋๋ผ๋ true๋ฉด ๋๋๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ.
๐ ๋ฌด๊ฑฐ์ด ํจ์๋ ๋ค๋ก, ์ฌํํ value์ ๊ฐ์ ์์ ๋ฌ์ผ ์์ ๊ฐ์ด false์ผ ๋ ๋ง์ง๋ชปํด ํธ์ถํ๋ ๊ฒ์ด ์ ์ผ ์ข๋ค.
< && (and) >
: ๋ชจ๋ true๊ฐ ๋ผ์ผํ๋ค.
: ์์์ false๊ฐ ๋์ค๋ฉด, ๋ค์๋ ์ฒดํฌX.
: || (or)๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ํจ์๋ฅผ ๋ค์ชฝ์ผ๋ก ํธ์ถํ ๊ฒ.
// && (and), finds the first falsy value
console.log(`and: ${value1 && value2 && check()}`);
// often used to compress long if-statement
// nullableObject && nullableObject.something
if (nullableObject != null){
nullableObject.something;
}
: ๊ฐํธํ๊ฒ null ์ฒดํฌํ ์ ์๋ค.
: object๊ฐ null์ด๋ฉด false์ด๊ธฐ ๋๋ฌธ์ ๋ค์ ์คํX. null object๊ฐ null์ด ์๋๋๋ง something ์ด๋ผ๋ value๋ฅผ ๋ฐ์์ค๊ฒ๋๋ค.
if (nullableObject != null){
nullableObject.something;
}
์ด ์ฝ๋๋ก ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
< ! (not) >
: ๊ฐ์ ๋ฐ๋๋ก ๋ฐ๊ฟ์ค
: value 1์ด true ์ด๊ธฐ ๋๋ฌธ์, false๋ก ๋ฐ๊ฟ์ค.
// ! (not)
console.log(!value1);
7. Equality
// 7. Equality
const stringFive = '5';
const numberFive = 5;
// == loose equality, with type conversion
console.log(stringFive == numberFive);
console.log(stringFive != numberFive);
// === strict equality, no type conversion
console.log(stringFive === numberFive);
console.log(stringFive !== numberFive);
loose equality (==, ํ์
์ ๋ณ๊ฒฝํด์ ๊ฒ์ฌํ๋ค)
: stringFive๊ณผ numberFive์ด ๊ฐ๋ค๊ณ ๋์ด >> stringFive๊ฐ ๋ฌธ์์ด์ด๊ธด ํ์ง๋ง ์์ ์๋ ๊ฑด ์ซ์ 5๋๊น ๋์ด ๋๊ฐ์! ๋ผ๊ณ ํด์๋๋ ๊ฒ.
(==) ๊ฐ๋ค
(!=) ๊ฐ์ง์๋ค
strict equality (===, ํ์
๋ค๋ฅด๋ฉด ๋ค๋ฅธ๊ฒ์ผ๋ก ๊ฒ์ฌ)
: stringFive๊ณผ numberFive์ด ๋ค๋ฅด๋ค๊ณ ๋์ด
: ์ฝ๋ฉ ๊ฒ์ฌํ ๋ sctrict equality๋ฅผ ์ฌ์ฉ ํ๋ ๊ฑธ ์ถ์ฒ
// object equality by reference
const ellie1 = { name: 'ellie'};
const ellie2 = { name: 'ellie'};
const ellie3 = ellie1;
console.log(ellie1 == ellie2);
console.log(ellie1 === ellie2);
console.log(ellie1 === ellie3);
- object๋ ๋ฉ๋ชจ๋ฆฌ์ ํ์ฌ๋ ๋ reference๋ก ์ ์ฅ๋จ.
- ellie1๊ณผ ellie2๋ ๋๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ object์ง๋ง ์ค์ ๋ฉ๋ชจ๋ฆฌ์ 1๊ณผ 2์๋ ๋ค๋ฅธ reference๊ฐ ๋ค์ด์๋ค.
- ellie3์ ellie1์ reference๊ฐ ํ ๋น๋ผ์์ด 1๊ณผ ๋๊ฐ์ ๊ฐ์ ๊ฐ์ก๋ค.
โผ
console์๋ ์ด๋ป๊ฒ ์ถ๋ ฅ๋ ๊น?
console.log(ellie1 == ellie2); //false;
console.log(ellie1 === ellie2); //false;
console.log(ellie1 === ellie3); //true;
- ellie1๊ณผ ellie2๋ ๋๊ฐ์ ๊ฐ์ ๊ฐ์ก์ง๋ง reference๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ false
- ellie1 ellie2๋ ๋๊ฐ์ ํ์ ์ด๋ ์๋๋ reference์ ๊ฐ์ด ๋ค๋ฅด๊ธฐ๋๋ฌธ์ false
- ๊ฐ์ reference์ ๊ฐ์ ํ ๋นํ๊ธฐ ๋๋ฌธ์ true
ellie1 > ref1 > name
ellie2> ref2 > name
ellie3 >ref1
//equlity - puzzler
console.log(0 == false); //0์ false๋ก ๊ฐ์ฃผ๋๊ธฐ ๋๋ฌธ์ true
console.log(0 === false); //0 ์ boolean type ์ด ์๋๊ธฐ ๋๋ฌธ์ false
console.log('' == false); //๋น์ด์๋ ๊ฐ์ false๋ก ๋์ค๊ธฐ ๋๋ฌธ์ true
console.log('' === false); //๋น์ด์๋ ๊ฐ ์์ฒด๋ boolean type์ด ์๋๊ธฐ ๋๋ฌธ์ false
console.log(null == undefined); //null๊ณผundefined๋ ๊ฐ์ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๊ธฐ ๋๋ฌธ์ true
console.log(null === undefined); // ํ์ง๋ง /null๊ณผundefined๋ ๋ค๋ฅธ type์ด๊ธฐ ๋๋ฌธ์ false
[์ถ์ฒ] JavaScript #4 [defer, ๋ณ์, operators]|์์ฑ์ zero
8. Conditional operator
: if, else if, else
// 8. Conditional operators : if
// if, else if, else
const name = 'ellie';
if (name === 'ellie') {
console.log('Welcome, Ellie!');
} else if (name === 'coder'){
console.log('You are amazing coder');
} else {
console.log('unknown');
}
- if ( )๊ฐ true → ๋ค์ { }์คํ. (console๋ก๊ทธ์์ Welcome, Ellie!๊ฐ ์ถ๋ ฅ๋๋ค)
๋ง์ฝ const name์ด code๋ผ๋ฉด?
// 8. Conditional operators : if
// if, else if, else
const name = 'coder';
if (name === 'ellie') {
console.log('Welcome, Ellie!');
} else if (name === 'coder'){
console.log('You are amazing coder');
} else {
console.log('unknown');
}
- ๋ง์ฝ ์ด๋ฆ์ด coder ๋ผ๋ฉด ellie๊ฐ ์๋๋ฏ๋ก else if ๋ก ๋์ด๊ฐ๋ค. ๊ทธ๊ฒ๋ ์๋๋ฉด ๊ทธ ๋ค์์ ์๋ else{ } ๋ก ๋์ด๊ฐ๋ค.
9. Ternary operator
: ์ผํญ ์ฐ์ฐ์
// 9. Ternary operator : ?
// condition ? value1 : value2;
console.log(name === 'ellie' ? 'yes' : 'no');
: ? ์ฌ์ฉ์, true๋ฉด :์ ์ผ์ชฝ์ ์๋ ๊ฒ(yes)์ ์ฌ์ฉํ๊ณ false๋ฉด : ์ค๋ฅธ์ชฝ์ ์๋ ๊ฒ(no)์ ์คํํ๋ค.
: ๊ฐ๋จํ ์ถ๋ ฅ์ ๋ง์ด ์ฌ์ฉ (๋ณต์กํด์ง๋ฉด ๊ณ์ ์จ์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๊ธฐ ๋๋ฌธ์ if ํจ์๋ switch๋ฅผ ์ฐ๋ ๊ฒ ์ข๋ค)
: ellie๊ฐ ์๋๋ฏ๋ก no๊ฐ ์ถ๋ ฅ๋๋ค
10. Switch operators
// 10. Switch statement
// use for multiple if checks
// use for enum-like value check
// use for multiple type checks in TS
const browser = 'IE';
switch (browser) {
case 'IE':
console.log('go away!');
break;
case 'Chrome':
console.log('love you!');
break;
case 'Firefox':
console.log('love you!');
break;
default:
console.log('same all!');
break;
}
: switch ์์ ๊ฐ (browser)๊ฐ์ด 'IE'์ด๋ฉด 'go away!'์คํํ๊ฒ ๋๊ณ ,
break; ๋ฉ์ถ๋ค๋ ๋ป.
chrome ์ด๋ฉด ์ฝ์๋ก๊ทธ love you๋ฅผ ์ถ๋ ฅํ๊ณ ๋ฉ์ถ๊ณ ....
๋๊ฐ์ ๊ฐ์ด ๊ฒน์น๋ฉด ์ฐ๋ฌ์ ์ฐ๋ฉด ์๋์ ์ผ๋ก ๋ฌถ์ด์ ์ถ๋ ฅ๋๋ค.
ex)
case 'Chrome':
case 'Firefox':
console.log('love you!');
break;
- if์์ else if ๋ค์ else if...๊ณ์ ๋ฐ๋ณตํ๋ค๋ฉด switch๋ฅผ ์ฌ์ฉํด๋ณด๋ ๊ฒ์ ๊ถ์ .
11. Loops (๋ฐ๋ณต๋ฌธ)
: while ( )์ ๊ฐ์ด false๊ฐ ๋ ๋๊น์ง ๊ณ์ ๋ฐ๋ณต
: i๊ฐ 0๋ณด๋ค ํฌ๋ฉด console.log(`while:${i}`);์ ์คํํ๊ณ i์ ๊ฐ์ 1 ๋ง์ด๋์ค ํด์ค๋ค.
// 11. Loops
// while loop, while the condition is truthy,
// body code is executed.
let i = 3;
while (i > 0) {
console.log(`while: ${i}`);
i--;
}
do-while loop
: ์์ ์๋ do{ }๋ธ๋ญ์ ์คํํ ๋ค์ while์ ์กฐ๊ฑด์ ๊ฒ์ฌํ๊ณ ๋ฉ์ถค.
: ๋ธ๋ญ์ ๋จผ์ ์คํํ๊ณ ์ถ๋ค๋ฉด do while, ์กฐ๊ฑด๋ฌธ์ด ๋ง์๋ block์ด ์คํ๋ผ์ผํ๋ค๋ฉด while.
// do while loop, body code is executed first,
// then check the condition.
do {
console.log(`do while: ${i}`);
i--;
} while (i > 0);
for-loop
//for loop, for(begin; condition; step)
for(i = 3; i > 0; i--){
console.log(`for:${i}`);
}
for loop ๋ begin์ ์ฒ์ ํ๋ฒ๋ง ์คํ๋๊ณ ๊ทธ ํ์ condition์ด ๋ง์ผ๋ฉด ์คํ, ์คํ๋ ํ์ step์ด ์คํ๋์ begin์ด ์ฒ์ ํ ๋ฒ๋ง ์คํ๋๊ณ ๋๋ฉด condition๊ณผ step๋ง ์กฐ๊ฑด์ ๋ง์ ๋๊น์ง ๋ฐ๋ณตํด์ ์คํ
(์์ ํ์ด์ ์ค๋ช ํ์๋ฉด, i=3 ํ๋ฒ๋ง ์คํํจ. 3์ 0๋ณด๋ค ํฌ๋? true => console๋ก๊ทธ ์คํ → i--๋ 1์ ๊ฐ์ํ๋ค๋ ๋ป์ด๋ฏ๋ก 2๋ 0๋ณด๋ค ํฌ๋? true =>console๋ก๊ทธ ์คํ..... → ๋ฐ๋ณต)
<inline variable declaration>
for(let i = 3; i > 0; i = i - 2){
//inline variable declaration
console.log(`inline variable for:${i}`);
}
: for ๋ฌธ ์์์ let์ด๋ผ๋ ๋ณ์๋ฅผ ์ ์ธํด์ ์คํํ ์๋ ์์.
< nested loops >
//nested loops
for (let i = 0; i < 10; i++){
for(let j = 0; j < 10; j++){
console.log(`i: ${i}, j: ${j}`);
}
}
for๋ฌธ ์์ for๋ฌธ์ ์์ฑํ ์ ์๋๋ฐ ์ด๋ฐ ๊ฒฝ์ฐ
i๊ฐ 0์ด๋ฉด j๊ฐ 1๋ถํฐ 9๊น์ง์ธ ๊ฒฝ์ฐ๊ฐ ์ถ๋ ฅ๋ ํ
๋ค์ i๊ฐ 1์ด๋ฉด j๊ฐ 1๋ถํฐ 9๊น์ง์ธ ๊ฒฝ์ฐ,
i๊ฐ 2์ด๋ฉด j๊ฐ 1๋ถํฐ 9๊น์ง์ธ ๊ฒฝ์ฐ ,
.
.
.
i๊ฐ 9์ด๋ฉด j๊ฐ 1๋ถํฐ 9๊น์ง์ธ ๊ฒฝ์ฐ
๊ฐ ๋ชจ๋ ์ถ๋ ฅ!
โ
>์ด๋ฌ๋ ๊ฒฝ์ฐ cpu์ ์ข์ง ์์. ๋๋๋ก์ด๋ฉด ํผํ๋ ๊ฒ ์ข๋ค.
(์ฌ๋ฌ๋ฒ ์ฝ์ด๋ด์ผ ์ดํด๋จ)
<break, continue>
: loop์์์๋ break, continue ๋ผ๋ ํค์๋ ์ฌ์ฉํด์ ๋๋ผ ์ ์๋ค.
- break : ๋ฉ์ถค
- continue : ์ง๊ธ ๊ฒ์ ๋ฉ์ถ๊ณ , ๋ค์ ์คํ
์ผ๋ก ๋์ด๊ฐ.
๋ฌธ์ ๋ฅผ ํ์ด๋ณด์
Q1. iterate from 0 to 10 and print only even numbers(use continue)
: ์ซ์ 0-10๊น์ง ์ซ์๋ฅผ ์ง์๋ง ํ๋ฆฐํธ ํด์ 'continue' ์จ์ ๋ง๋ค๊ธฐ
๋ด ๋ต:
for(let i=0; i < 10; i + 2) {
์ฐ๋ค๋ง์๋ค.. 11์ธ์ง 10์ธ์ง ๊ธด๊ฐ๋ฏผ๊ฐํ๋๋ฐ ์ญ์๋ 11์ด์๋ค..ใ ใ
<์ ๋ต>
for (let i = 0; i < 11; i++){
if (i % 2 !== 0) {
continue;
}
: i๋ฅผ 2๋ก ๋๋ด์ ๋ ๋๋จธ์ง ๊ฐ์ด(i%2)์ด 0์ด ์๋ ๊ฒฝ์ฐ(!== 0) ํด๋น ๊ฐ์ ๊ฑด๋๋ด๋ค.
Q2. iterate frome 0 to 10 and print numbers until reaching 8 (use break)
: ์ซ์ 0-10๊น์ง ํ๋ฆฐํธํ๋ ์ซ์ 8์ด ๋์ค๋ฉด 'break'์จ์ ๋ฉ์ถ๊ธฐ
๋ด ๋ต:
for(let i = 0; i < 10; i++) {
if (i = 8) {
break;
}
<์ ๋ต>
for (let i = 0; i < 11; i++) {
if (i > 8) {
break;
}
- 1๋ถํฐ 10๊น์ง์์ผ๋๊น i < 11
- i๊ฐ 8๋ณด๋ค ์ปค์ง๋ค๋ฉด ๋ฉ์ถ๊ธฐ
[์ถ์ฒ] JavaScript #4 [defer, ๋ณ์, operators]|์์ฑ์ zero] ๋ง์ด ์ฐธ๊ณ ํจ!
'๐Development > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] DOM์ด๋? #1 Node์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ (0) | 2023.03.26 |
---|---|
[JS] Arrow Function์ ๋ฌด์์ธ๊ฐ? ํจ์์ ์ ์ธ๊ณผ ํํ (0) | 2023.03.13 |
[JS] ๋ฐ์ดํฐํ์ , data types, ๋ณ์ ์ ์ธ let vs var, hoisting (1) | 2023.03.12 |
[JS] ์ฝ์์ ์ถ๋ ฅ, script async ์ defer์ ์ฐจ์ด์ (0) | 2023.03.12 |
[JS] JavaScript์ ์ญ์ฌ, ํ์ฌ ๊ทธ๋ฆฌ๊ณ ๋ฏธ๋ (0) | 2023.03.11 |