operator
- string concatenation
console.log('my'+' cat');
console.log('1'+2); //12
console.log(`string literals : 1 + 2 = ${1 + 2}`);
- ๊ธฐํธ๋ฅผ ์ด์ฉํด์ ๋ฌธ์์ด์ ํฉ์น ์ ์๋ค
๋ฌธ์์ด+๋ฌธ์์ด = ๋ฌธ์์ด ์ถ๋ ฅ ๋ฌธ์์ด+์ซ์ = (์ซ์๋ฅผ ๋ฌธ์์ด ํ)๋ฌธ์์ด ์ถ๋ ฅ
` ` ๋ฐฑํฑ์ผ๋ก string literals์ ๋ง๋ค ์ ์๋ค. ์ค๊ฐ์ ๋ณ์๊ฐ ์ฝ์ ๋๋ฉด ๊ณ์ฐํด์ ๋ฌธ์์ด๋ก ๋๋ ค์ค๋ค ์ค๋ฐ๊ฟ์ด๋ ํน์๊ธฐํธ๋ ๊ทธ๋๋ก ์ถ๋ ฅ์ด ๊ฐ๋ฅ (์ฑ๊ธ์ฟผํธ โ โ ์ ์ฌ์ด์ โ๋ฅผ ๋ฃ์ ๋๋ ' ๋ฐฑ์ฌ๋ฌ์๋ฅผ ๋ฃ์ด์ผ๋ง ํ๋ค)
- Numeric operators ```js console.log(1 + 1); //add console.log(1 - 1); //substract console.log(1 / 1); //divide console.log(1 * 1); //multiply console.log(5 % 2); //reminder ๋๋๊ณ ๋๋จธ์ง console.log(2 ** 3); //exponentiation 2์ 3์น
3. Increment and decrement operators
```js
let counter = 2;
const preIncrement = ++counter;
// ์ ์ฝ๋๋ ์๋์ ๋์ผํ๋ค
//couter = counter + 1;
//preIncrement = counter;
// counter์ 1์ ๋ํด์ ๊ฐ์ ๋ค์ counter์ ํ ๋นํ ๋ค์์ preIncrement์ counter์ ๊ฐ์ ํ ๋นํ๋ค
console.log(preIncrement, counter);
// 3,3 ์ถ๋ ฅ
const postIncrement = counter++;
// ์ ์ฝ๋๋ ์๋์ ๋์ผํ๋ค
// postIncrement = counter;
counter = counter + 1;
// postIncrement์ counter์ ๊ฐ์ ํ ๋นํ ๋ค์, counter์ 1์ ๋ํด์ ๊ฐ์ ๋ค์ counter์ ํ ๋นํ๋ค
console.log(postIncrement, counter);
// 3,4 ์ถ๋ ฅ
- Assignment operators
let x = 3; let y = 6; x += y; // x = x + y; x -= y; x *= y; x /= y;
- Comparison operators
console.log(10 < 6); console.log(10 <= 6); console.log(10 > 6); console.log(10 >= 6);
- logical operators : ใ ฃใ ฃ(or) , &&(and) , !(not)
const value1 = false;
const value2 = 4 < 2;
console.log(`or: ${ value1 ใ
ฃใ
ฃvalue2ใ
ฃใ
ฃcheck() }`); //or : true
console.log(`and: ${ value1 && value2 && check() }`); //and : false
function check() {
for (let i = 0; i < 10; i++) {
console.log('print')
};
return true;
}
- or : finds the first truthy value
์ฒ์์ผ๋ก true๊ฐ ๋์ค๋ฉด ๊ฑฐ๊ธฐ์ ๋ฉ์ถ๋ค. ๋ง์ฝ value1์ด true๋ผ๋ฉด ๋ค๊ฐ ๋ญ๋ ์๊ด์์. ๊ทธ๋ฌ๋๊น check๊ฐ์ expression์ ์ ์ผ ์์ ๋๋ฉด ์๋จ.
=> ๊ฐ๋จํ value๋ค์ ์ ์ผ ์์๋ฌ์ ๊ฑ๋ค์ด false์ผ๋๋ง ๋ง์ง๋ง์ ๋ง์ง๋ชปํด ํธ์ถํ๋๊ฒ ์ ์ผ ์ข๋ค.
- and : finds the first falsy value ๋ชจ๋ true์ผ ๋๋ง true๋ฅผ ๋ฆฌํดํ๋ค. or๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ value๊ฐ false๋ผ๋ฉด ๊ฑฐ๊ธฐ์ ๋ฉ์ถ๋ค. ๋ค๊ฐ ๋ญ๋ ์๊ด์์ด ์์ ์คํ์กฐ์ฐจ ํ์ง ์์
=> and๋ํ heavyํ operation์ผ์๋ก ์ ์ผ ์์์ ์ฒดํฌํ๋ ๊ฒ์ด ์ข๋ค
offen used to compress long if-statement ์ด๋ฌํ ์์ฑ ๋๋ฌธ์, null ์ฒดํฌ๋ฌธ์ผ๋ก ์ฌ์ฉ๋๋ค
nullableObject && nullableObject.something
- ๋งจ ์ฒ์์ด false๋ผ๋ฉด ๋ค๋ฅผ ์คํ์กฐ์ฐจ ํ์ง์๋ ์์ฑ์ ์ด์ฉํ ๊ฐ๋จํ null์ฒดํฌ๋ฌธ.
-
nullableObject๊ฐ null์ด ๋ค์ด์ค๋ฉด false์ด๊ธฐ ๋๋ฌธ์, ๋ค๊ฐ ์คํ๋์ง ์๋๋ค!
- not : !
console.log(!value1);
๊ฐ์ ๋ฐ๋๋ก ๋ฐ๊ฟ์ค๋ค
- Equality
const stringFive = '5';
const numberFive = 5;
// loose equality, with type conversion
console.log(stringFive == numberFive); // true
console.log(stringFive != numberFive); // false
// string equality, no type conversion
console.log(stringFive === numberFive); // false
console.log(stringFive !== numberFive); // true
-
- == / !== loose equality
- ํ์ ์ ๋ณ๊ฒฝํด์ ๊ฐ์ ๋น๊ตํ๋ค
-
- === / !=== strick equality
- ํ์ ์ ์์ํด์ ๊ฐ์ ๋น๊ตํ๋ค
- object equality by reference
const ellie1 = { name : 'ellie' };
const ellie2 = { name : 'ellie' };
const ellie3 = ellie1;
console.log(ellie1 == ellie2); // false
console.log(ellie1 === ellie2); // false
console.log(ellie1 === ellie2);// true
object๋ ๋ฉ๋ชจ๋ฆฌ์ ํ์ฌ๋ ๋, reference ํํ๋ก ์ ์ฅ๋๋ค
object ellie1๊ณผ ellie2๋ ๋ค์ด์๋ ๊ฐ์ ๊ฐ์๋ณด์ด์ง๋ง,
์ค์ ๋ก 1๊ณผ 2์๋ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ ํผ๋ฐ์ค๊ฐ ์ ์ฅ๋์ด์์
๊ทธ ๋ค๋ฅธ ๋ ํผ๋ฐ์ค๋, ์๋ก ๋ค๋ฅธ object๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ค
ellie3๋ ellie1๊ณผ ๋์ผํ ๋ ํผ๋ฐ์ค๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์.
๊ทธ๋์ ellie1๊ณผ ellie2๋ ํ์
์ ๋์ผํ๊ฒ ๋ณธ๋๋ ๋ ํผ๋ฐ์ค๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๊ฐ์ง ์๋ค!
ํ์
์ ์์ํด์ ๋น๊ตํด๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ ํผ๋ฐ์ค๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๊ฐ์ง ์์.
ํ์ง๋ง ellie3๊ณผ ellie1๋ ๋์ผํ ๋ ํผ๋ฐ์ค์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ค!
- equality puzzler *
console.log(0 == false); // true
console.log(0 === false); // false 0์ boolean์ด ์๋๋ค
console.log('' == false); // true empty๋ฌธ์์ด์ false์ด๋ค
console.log('' === false); // false empty ๋ฌธ์์ด์ boolean์ด ์๋๋ค
console.log(null == undefined); //true null๊ณผ undefined์ ๊ฐ๋ค (ํน์ดํ๊ฒ๋)
console.log(null === undefined); //false null๊ณผ undefined๋ ๋ค๋ฅธ ํ์
์ด๋ค
- Conditional operator: if //if,else,lf,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 statement๊ฐ true๋ผ๋ฉด, ๊ทธ ์์ ์๋ block์ ์คํํ๊ฒ ๋๋ค
๊ทธ๊ฒ ์๋๋ผ๋ฉด else if, ๊ทธ๊ฒ๋ ์๋๋ผ๋ฉด else๋ก ๋์ด์์ block์ ์คํํ๋ค
- Ternary operator: ? //condition ? value1 : value2;
console.log(name === 'ellie' ? 'yes' : 'no');
๊ธธ์ด์ง๋ฉด ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ธฐ ๋๋ฌธ์, ์กฐ๊ฑด๋ฌธ์ด ๊ฐ๋จํ ๋์๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
- 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;
case 'Chrome':
case 'FireFox':
console.log('love you!');
break;
default:
console.log('love you!');
break;
}
if๋ฌธ์์ else if๋ฅผ ๋ฐ๋ณตํ๋ค๋ฉด switch๋ฅผ ์ฐ๋ ๊ฒ์ ๊ณ ๋ คํ๋ ๊ฒ ์ข๋ค!
๋ง์ฝ ์คํํ ๋์์ด ๊ฐ์ ๊ฒฝ์ฐ์ case๋ฅผ ์ฐ๋ฌ์ ์ฐ๋ฉด ๋๋ค
TS์์ ์ ํด์ ธ์๋ ํ์
์ ๊ฒ์ฌํ ๋์ switch๋ฅผ ์ฐ๋ ๊ฒ์ด ๊ฐ๋
์ฑ์ด ์ข๋ค
- Loops
- while while loop, while the condition is truthy, body code is executed.
let i = 3;
while (i > 0) {
console.log(`while: ${i}`);
i--;
}
while์ statement๊ฐ false๋ก ๋์ค๊ธฐ ์ ๊น์ง๋ ๋ฌดํ๋๋ก ๋ฐ๋ณตํด์ ๊ณ์ ๋๋ค.
- do while do while loop, body code is excuted first, then check the condition.
do {
console.log(`do while: ${i}`);
i--;
}while (i > 0);
๋จผ์ ๋ธ๋ญ์ ์คํํ ํ์ ์กฐ๊ฑด์ ๊ฒ์ฌํ๋ค.
=> ๋ธ๋ญ์ ๋จผ์ ์คํํ๊ณ ์ถ๋ค๋ฉด do while,
์กฐ๊ฑด์ ๋ง์ ๋์๋ง ๋ธ๋ญ์ ์คํํ๊ณ ์ถ๋ค๋ฉด while์ ์จ์ผํ๋ค!
- for for loop, for(begin; condition; step)
for (i = 3; i > 0; i--) {
console.log(`for: ${i}`);
}
for์ ์์ํ๋ ๋ฌธ์ฅ, ์ปจ๋์
, ์ด๋ค ์คํ
์ ๋ฐ์ ๊ฒ์ธ์ง๋ฅผ ๋ช
์ํ๋ค
1) begin์ ์ฒ์์ ๋ฑ ํ๋ฒ๋ง ์คํํ๊ณ
2) ๋ธ๋ญ์ ์คํํ๊ธฐ ์ ์ ์ปจ๋์
์ด ๋ง๋์ง ๊ฒ์ฌํ ๋ค์
3) ๋ธ๋ญ์ ์คํํ๊ณ
4) ์คํ
์ ์คํํ๋ค
=> ์ปจ๋์
์ด ๋ง์ ๋์ 2,3,4๋ฅผ ๋ฐ๋ณตํ๋ค
์ด for๋ฌธ์ฒ๋ผ ๊ธฐ์กด์ ์กด์ฌํ๋ ๋ณ์์ ๊ฐ์ ํ ๋นํ๋ ๊ฒฝ์ฐ๋ ์๊ณ
for (let i = 3; i > 0; i = i - 2) {
// inline variable declaration
console.log(`inline variable for: ${i}`);
}
์ด๋ ๊ฒ for์์์, block์์ let์ผ๋ก ์ง์ญ๋ณ์๋ฅผ ์ ์ธํด์ ์์ฑํ ์๋ ์๋ค.
nested loops
- while๊ณผ for์ nested loops์ด ๊ฐ๋ฅํ๋ค
for (let i = 0; i < 10; i++) {
for (let j = 0; i < 10; i++) {
console.log(`i: ${i}, j: ${j}`);
}
}
for๋ฌธ ์์ for๋ฌธ์ ์์
1) i๊ฐ 0์ผ ๋, j๋ 0~9๊น์ง ๋ฐ๋ณต๋๊ณ
2) i๊ฐ 1์ผ ๋, j๋ 0~9๊น์ง ๋ฐ๋ณต๋๊ณ
โฆ..
ex)๊ตฌ๊ตฌ๋จ
-
break, continue
loop ์์์๋ break์ continue๋ฅผ ์ด์ฉํด ๋ฃจํ๋ฅผ ๋๋ผ ์ ์๋ค! -
- break
- ๋ฃจํ๋ฅผ ์์ ํ ๋๋
-
- continue
- ์ง๊ธ ๊ฒ๋ง ์คํตํ๊ณ , ๋ค์ ์คํ
์ผ๋ก ๋์ด๊ฐ
Q1. iterate from 0 to 10 and print only even numbers (use continue)
for(let i = 0; i < 11; i++) {
if(i % 2 !== 0) {
continue;
// 2๋ก ๋๋ด์ ๋ 0์ด ์๋๋ฉด ์คํตํ๊ณ ๋ค์ ์คํ
์ผ๋ก
}
console.log(`even number is : ${i}`)
}
// ์ค๋ฌด์ ์ธ ๋ต :
// for(let i = 0; i < 11; i++) {
// if(i % 2 == 0 && i > 0) {
// console.log(`even number is : ${i}`)
// }
// }
Q2. iterate from 0 to 10 and print numbers until reaching 8 (use break)
for(let i = 0; i < 11; i++) {
if(i == 8){
break;
}
console.log(`number is : ${i}`);
}