Nemeric operators
console.log(1+1); // 더하기
console.log(1-1); // 빼기
console.log(1/1); //나누기
console.log(1*1); //곱하기
console.log(5%2); //나눈 나머지값
console.log(2**3); //2의 제곱
const preIncrement =++ counter;
↓
counter = counter + 1;
preIncrement = counter;
counter에 1을 더하고 그 counter를 preIncremet에 할당한다.
또 다르게 쓰게 되면
const preIncrement =counter++;
이렇게 counter 뒤에 ++를 붙이면
preIncrement = counter;
counter = counter + 1;
counter를 먼저 preIncrement에 할당하고
counter에 1을 더한다.
let x = 1;
lety = 2;
x = x+y;
위와 같이 값을 변수에 할당하려고 할때 사용하는 것이 =이다. 또한 x가 반복되는 경우는
x +=y;
x -=y;
x *=y;
x /=y;
와 같이 x를 생략하고 사용된다.
||, &&, !
const value1 = true;
const value2 = 4<2;
OR일때
console.log(`or:${value1||value2||check()}`);
function check(){
for(let i = 0; i<10; i++){
console.log("asdfasdfasdf");
}
return true;
}
OR일때 하나의 값이라도 true이면 true값을 출력한다
물론 비교할때 함수를 넣어도 상관없다
다만 조금 복잡한 함수를 비교할땐 함수를 앞에다 두지 않고 제일 마지막에 넣는 것이 좋다.
그 이유는 함수를 앞에 넣게 될 경우에는 값을 비교하는데 시간이 오래 걸리기 때문이다.
AND일때
console.log(`or:${value1 && value2 && check()}`);
function check(){
for(let i = 0; i<10; i++){
console.log("asdfasdfasdf");
}
return true;
}
AND일때도 OR와 비슷하다 AND일때는 모든값이 true가 아니면 false값을 출력한다
만약 처음부터 value1값이 false이면 뒤의 값은 비교하지 않은체 false값을 출력하게 된다
NOT일때
!
NOT은 값을 반대로 바꾸는 특성이 있다 true면 false false이면 true로 바꾼다
a==b일때 ==는 두개의 값의 type을 같게 만든 후 두 값이 같은지를 검사한다.
a===b는 둘의 type과 값이 모두 같은지 검사한다
이것을 객체에서 사용할때 조금 주의깊게 봐야되는데
const ellie1 = {name: "ellie"};
const ellie2 = {name: "ellie"};
const ellie3 = ellie1;
console.log(ellie1==ellie2);
console.log(ellie1 ===ellie2);
console.log(ellie1===ellie3);
ellie1과 ellie2은 서로 다른 객체를 저장하고 있기 때문에 둘은 false값이 나오게 되고 ===를 사용해도 다른 값과 객체를 가지고 있기 때문에 false가 나오게 된다.
ellie3는 ellie1을 값으로 가지고 있기 때문에 둘을 비교했을때 true값이 나오게 된다.
if(){
}else if(){
}else{
}
if값이 true이면 if안에 구문을 실행 시키게 되고 if값이 false이면 else if
else if 값이 false이면 else의 구문을 실행하게 된다.
if를 더 간단하게 사용할 수 있을 것이 ? operators이다
console.log(name ==="name" ? "yes" : "no");
name과 "name"이 같으면 "yes"
다르면 "no"을 선택하게 된다.
이 operators를 사용할 때는 정말 간단한 if구문을 사용해야 할 때가 가장 적절하다.
만약 복잡한 if구문을 만들어야 될때는 ?operators
아닌 if else구문을 사용하는 것이 코드의 가독성 면 에서도 좋다.
const browser = 'IE';
switch (browser){
case 'IE':
console.log('go away');
break;
case 'Chrome':
case 'Firefox':
console.log('love you');
break;
default :
console.log('same all');
break;
switch의 browser값이 IE이면 'go away'를 출력하고 'Chrome'이나 'Firefox'이면 'love you'를 출력시키고 전부 다 아니라면 'same all'를 출력시킨다.
let i = 3;
while(i>0){
console.log(`while:${i}`);
i--;
}
i가 0보다 크면 출력하고 i를 1감소 시킨다
i가 0보다 작거나 같아질때까지 반복한다.
do while
while과 다르게 먼저 실행하고 그 다음 조건이 맞는지 확인한다.
do {
console.log(`do while: ${i}`);
i--;
} while(i>0);
블럭을 먼저 실행시키고 싶다면 do while을 쓰고 조건문이 맞을때만 실행하고 싶으면 while을 써야된다.
for(i = 4; i>0; i--){
consol.log(`for:${i}`);
}
괄호안에 i의 초기값을 주고 조건문인 i가 0보다 클때 실행을 시킨 후 i를 1감소시킨다.
(i가 0보다 작게되거나 같아지면 종료)
초기값을 줄때 let i = 3;처럼 지역변수를 선언해서 초기값을 줄 수도 있다.
또 for 안에 또 다른 for문을 넣을 수가 있는데 이건 되도록이면 피하는게 좋다고 한다.