01.JavaScriptベース-演算子


🌈 演算子
1.演算子タイプ
  • 数学演算子、増減演算子、賦値演算子、比較演算子、論理演算子、等しい演算子など
  • 1)四則演算子
  • 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 몫(//), 나머지(%), 거듭제곱(**)
  • // 이항연산자 '+'와 문자열 연결
    let s = "my" + "string";
    alert(s); // mystring
    // 덧셈에서 문자열에 있으면 문자로 연결됨
    alert( '1' + 2 ); // "12"
    alert( 2 + '1' ); // "21"
    // 덧셈에서 숫자끼리 만났을 때는 덧셈이 되지만, 문자열을 만나면 합쳐짐
    alert(2 + 2 + '1' ); // '221'이 아니라 '41'이 출력됩니다.
    // 뺄셈, 나눗셈, 곱셈에서는 문자형을 숫자형으로 자동 변환된 후 연산이 이뤄짐
    alert( 6 - '2' ); // 4
    alert( '6' / '2' ); // 3, 두 피연산자가 숫자로 바뀐 후 연산이 진행됩니다.
    2)増減演算子
  • 数字の増減は増減演算子
  • である.
  • 増感演説者は前衛型と後衛型の
  • に分かれている.
  • 前衛(++変数または--変数)は、自分の値を増加または減少させ、変数
  • に値を割り当てる.
  • 下位ビット(変数+または変数--)は、まず変数に割り当てられ、その後、
  • を自分で増加または減少させる.
    // 1씩 증가
    let counter = 2;
    counter++;      // counter = counter + 1과 동일하게 동작함
    alert( counter ); // 3
    // 1씩 감소
    let counter = 2;
    counter--;      // counter = counter - 1과 동일하게 동작함
    alert( counter ); // 1
    // 증감연산자 전위형
    // counter를 먼저 증가시킨 뒤, 증가된 값을 반환하여 할당함
    let counter = 1;
    let a = ++counter;
    console.log(counter) // 2
    console.log(a); // 2
    // 증감연사자 후위형
    // count를 먼저 할당한 뒤, 자신을 증가시킴
    let counter = 1;
    let a = counter++; // (*) ++counter를 counter++로 바꿈
    console.log(counter); // 2
    console.log(a); // 1
    // 전위형 vs 후위형 예제
    let counter = 2; // 초기 counter 2로 선언
    const preIncrement = ++counter;
    console.log(`preIncrement: ${preIncrement}, counter: ${counter}`);
    // preIncrement: 3, counter: 3
    const postIncrement = counter++;
    console.log(`postIncrement: ${postIncrement}, counter: ${counter}`);
    // postIncrement: 3, counter: 4
    const preDecrement = --counter;
    console.log(`preDecrement: ${preDecrement}, counter: ${counter}`);
    // preDecrement: 3, counter: 3
    const postDecrement = counter--;
    console.log(`postDecrement: ${postDecrement}, counter: ${counter}`);
    // postDecrement: 3, counter: 2
    3)割付演算子
  • 割当で使用する「=」も演算子
  • です.
  • 式(右側)では、まず計算を行い、その結果を変数(左側)
  • として割り当てる.
  • 割り当て演算子の優先度は低く、
  • // assignment operators
    let x = 3;
    let y = 6;
    x += y; // x = x + y
    console.log(x,y) // 9 6
    x -= y; // x = x - y
    console.log(x,y) // 3 6
    x *= y; // x = x * y
    console.log(x,y) // 18 / 6
    x /= y; // x = x / y
    console.log(x,y) // 3 / 6
    //
    let n = 2;
    console.log(n) // 2
    n = n + 5;
    console.log(n) // 7
    n = n * 2;
    console.log(n) // 14
    //
    let n = 2;
    n *= 3 + 5; // n = n * (3 + 5) -> 할당연산자가 우선순위 낮아 오른쪽 연산(3+5)부터 연산됨
    console.log(n); // 16
    4)比較演算子
  • より大きい(a>b)、小さい(a
  • 演算はBoolean型
  • を返す
    //comparison operators
    console.log(10 < 6); // false
    console.log(10 <= 6); // false
    console.log(10 > 6); // true
    console.log(10 >= 6); // ture
    5)論理演算子
  • ||(or), &&(and), !(not)
  • // logical operators : ||(or), &&(and), !(not)
    const value1 = false; //false
    const value2 = 4 < 2; //false
    // || (or) : finds the first turthy value(가장 처음 나오는 true를 찾음)
    // 이 때문에 함수 같은 경우는 || 맨 뒤에 둠, 함수가 true가 되서 뒤에 것들이 실행 안될 수 있기 때문
    console.log(`or: ${value1 || value2 || check()}`);
    function check() {
      for (let i = 0; i < 10; i++) {
        console.log("🥰");
      }
      return true;
    }
    // && (and) : finds the first falsy value(가장 처음 나오는 false를 찾음)
    // 첫번째 value1가 flase기 때문에 뒤에 모두 실행 안됨
    console.log(`and: ${value1 && value2 && check()}`);
    function check() {
      for (let i = 0; i < 10; i++) {
        console.log("🥰");
      }
      return true;
    }
    // !(not)
    console.log(!value1); // ture
    6)等しい演算子
  • ピア演算子が同じか異なるか(==)
  • ピア演算子異なるデータ型の被演算子を比較するとき、被演算子を数値に変換して比較する
  • .
    等しい演算子"="は0とfalse(等しいとみなされる)を区別できません

  • これを区別するには、より厳密なピア演算子「一致演算子」(=,!=)を使用して、変換なしで
  • の値を比較します.
    nullとundefinedを同等連語の例外規則として比較すると、特殊規則はtrueを適用してを返す.
    同等演算子が一致しないため、JavaScriptの作成時に一致演算子
  • を使用することを推奨します.
    // 동등연산자(==) : lose equality, with type conversion
    console.log(10 == '10'); // ture
    console.log(10 === 10); // ture
    console.log(10 === '10'); // false
    console.log(0 == false); // true
    console.log('' == false); // true
    console.log( 0 === false ); // false(형변환없음. 형이 다르기 때문에 false)
    // 동등연산자 예외
    console.log(null == undefined); // true
    console.log( null === undefined ); // false
    7) null vs undefined/null vs 0 /undefined vs 0
  • nullやundefinedなどの異常を理解する必要があります.
    // null vs undefined
    console.log( null == undefined ); // true 
    // -> 예외적으로 동등연산자(==)는 null이나 undefined가 피연산자로 있을 때 형변환을 하지 않음.
    // -> 그럼에도 불구하고 true가 나온 것은 동등연산자에서 null과 undefined를 특별한 커플로 취급하기 때문.
    console.log( null === undefined ); // false -> 형을 바꾸지 않기 때문
    //
    // null vs 0
    console.log( null > 0 );  // false -> null이 숫자형 0으로 반환되기 때문에 크지 않음
    console.log( null == 0 ); // false -> 동등연산자에서 null을 만나때는 형변환 안이뤄짐(예외)
    console.log( null >= 0 ); // true -> 비교연산자에서는 null이 숫자형 0으로 반환된기 때문에 true
    //
    // undefined vs 0
    alert( undefined > 0 ); // false -> undefined 숫자형으로 형변환되면 NaN이기 때문
    alert( undefined < 0 ); // false -> undefined 숫자형으로 형변환되면 NaN이기 때문
    alert( undefined == 0 ); // false  -> 형변환 되지 않음. 즉, undefined는 null 또는 undefined랑만 같음