JavaScript에서 대부분의 object는 mutable(값을 변경할 수 있는)이다.
console.log('my' + ' cat'); //my cat
console.log('1' + 2); //12
console.log("yuna\'s\tbook\nfirst");
//yuna's book
first
/ : divide
: multiply
increment and decrement operators
preincrement: ++counter
postincrement: counter++
predecrement: --counter
postdecrement: counter--
+=
-=
*=
/=
comparison operators
<
<=: less than or equal
=: greater than or equal
logical operators: ||, &&, !
따라서 모든 값이 false일 때 마지못해 맨 마지막 값을 호출하므로,
아래처럼 heavy한 연산이 들어간 값을 맨 뒤에 놓는 것이 이상적이다.
and도 heavy한 연산이 들어간 값을 맨 뒤에 놓는 것이 좋다.
**&&(and)는 간편하게 null check할 때 쓰인다.
첫 값이 null(false)이면 거기서 연산이 멈추기 때문에!
즉 첫 값이 null(false)이 아닐 경우만 마지막 값을 받아오게 되기 때문이다.
! => 값을 반대로 바꿔준다.
const value1 = true;
!value1; // false;
equality operators
==: loose equality, with type conversion
'5' == 5 // true
===: strict equality, no type conversion
ex)
const obj1 = { name : 'yuna' };
const obj2 = { name : 'yuna' };
const obj3 = obj1
obj1 == obj2; // false
obj1 === obj2; // false
obj1 == obj3; // true (복사된 값이므로 동일한 레퍼런스 가짐)
obj1 === obj3; // true (복사된 값이므로 동일한 값 가짐)
If operators
ternary operator: ?
condition? value1 : value2;
간단할 때만 쓰는 게 좋다. 복잡해질 때는 if나 switch를 쓰자.
switch (browser) {
case 'IE':
~
break;
case 'chrome':
~
break;
default:
~
break;
}
loops
while / do while /
for(begin(1); condition(2); step(4)) {(3)}
for (let i = 3; ; ) {} <= inline variable declaration