JavaScript(3) - operator
JavaScript 관련 포스팅
- JavaScript(1) - async vs. defer
- JavaScript(2) - variable
- JavaScript(3) - operator
- JavaScript(4) - function
- JavaScript(5) - class vs. object
- JavaScript(6) - object
- JavaScript(7) - array
- JavaScript(8) - JSON
- JavaScript(9) - callback
- JavaScript(10) - promise
- JavaScript(11) - Regular expressions
- JavaScript(12) - Prototype과 Class 피하기
- JavaScript(13) - localStorage
1. String concatenation
```javascript
console.log('my' + ' cat');
console.log('1' + 2);
console.log(`string literals: 1 + 2 = ${1 + 2}`);
console.log(`string literals:
'''''
3 + 4 = ${3 + 4}`);
```
> **Console**
> ###### my cat
> ###### 12
> ###### string literals: 1 + 2 = 3
> ###### string literals:
> ###### '''''
>
> ###### 3 + 4 = 7
- string literals의 경우, \`(backtick)을 사용해 줄 바꿈과 **`'`** (single qoutation mark) 입력이 쉬움
2. Logical operators: ||
(or), &&
(and), !
(not)
-
||
(or)
→ 여러 조건 중 하나라도 true이면 true
→ 조건을 나열할 때, 연산이 많은 것일수록 뒤에 선언하는 것이 좋음
→ true인 조건을 만나면 이후의 조건은 더 이상 읽지 않음 -
&&
(and)
→ 여러 조건 중 하나라도 false이면 false
→ 조건을 나열할 때, 연산이 많은 것일수록 뒤에 선언하는 것이 좋음
→ false인 조건을 만나면 이후의 조건은 더 이상 읽지 않음
→ null check할 때 유용하게 쓰임
3. Equality
const stringFive = '5';
const numberFive = 5;
// == loose equality, with type conversion
console.log(stringFive == numberFive); // true
console.log(stringFive != numberFive); // false
// === strick equality, no type conversion
console.log(stringFive === numberFive); // false
console.log(stringFive !== numberFive); // true
Console
true
false
false
true
// object equality by reference
const minji1 = { myname: 'minji'};
const minji2 = { myname: 'minji'};
const minji3 = minji1;
console.log(minji1 == minji2); // false
console.log(minji1 === minji2); // false
console.log(minji1 === minji3); // true
Console
false
false
true
→ object에는 object를 가리키는 reference를 저장함
// equality
console.log(0 == false); // true
console.log(0 === false); // false
console.log('' == false); // true
console.log('' === false); // false
console.log(null == undefined); // true
console.log(null === undefined); // false
⇒ 0, null, undefined, NaN, ‘’ 은 false로 간주함
⇒ 0은 boolean type이 아니라서 strict equality를 적용하게 되면 0은 false가 아님
⇒ null은 undefined로 간주되지만, null과 undefined는 다른 type
4. Ternary operator
- 삼항연산자
condition?value1:value2;
- 조건이 간단한 경우에만 씀
- 조건이 복잡해질 경우에는 if나 switch를 사용하는 것이 좋음
Switch statement
- if, else if를 반복하게 된다면 switch를 쓰는 것이 더 나음
-
enum-like value check시 사용
const browser = 'IE'; switch (browser) { case 'IE': console.log('go away!'); break; case 'Chrome': case 'Firefox': console.log('love you!'); // 'Chrome'과 'Firefox'의 결과 값이 같으므로 한번에 적어줌! break; default: console.log('same all!'); break; }
※ 같은 결과 값을 요구한다면, case를 이어서 적어주면 됨
Loops
nested loops
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
console.log(`i:${i}, j:${j}`);
}
}
⇒ O(n^2)이므로 CPU에 좋지 않으므로 피하는 것이 좋음!
continue/break
// 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;
}
console.log(`q1. ${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(`q2. ${i}`);
}
※ label은 다른 방식으로 코드를 바꿔 사용이 가능해 현업에서는 쓰지 않으니 참고!
< 출처 >
“자바스크립트 4. 코딩의 기본 operator, if, for loop 코드리뷰 팁 | 프론트엔드 개발자 입문편 (JavaScript ES6),” 유튜브 비디오, 20:14, 게시자 “드림코딩 by 엘리,” 2020년 4월 15일, https://youtu.be/tJieVCgGzhs