TIL 13 | JavaScript Operator


https://youtu.be/YBjufjBaxHo
『DREAMCODINGBY ELLY』のYouTube講座を見て整理した内容です

1. String concatenation


+符号により、文字列と文字列を新しい文字列にまとめることができる.
console.log('my' + 'dog'); // my dog
문자열숫자숫자を加えて문자열に変換して合わせます.
console.log('1' + 2); // 12
백틱符号を用いてstring literalsを作成することができる.{変数値の計算}
  • 文字列文字の利点:改行または中間に「singlequote」を使用して文字列に変換することもできます.
  • の間にquoteを付けたい場合は\'と書きます(反スラッシュと一緒に書きます!)
  • 新しい行を変更したい場合は、\n(反スラッシュとn)と書きます.
  • console.log(`string literals: 1 + 2 = ${1 + 2}`); // string literals: 1 + 2 = 3

    2. Numeric operators


    add 1 + 1
    subsract 1 - 1
    divide 1/1
    multiply 1 * 1
    残りの値を5%2で割ると、残りの値
    指数2**3の3乗

    3. Increment and decrement operators


    3-1. preIncrement


    ++を前に貼ることをpreIncrementと言います.
    let counter = 2;
    const preIncrement = ++counter;  //3  💚
    let counter = 2;
    counter = counter + 1;  // counter에 1을 더해서 다시 counter에 할당하고 (3이 되었다.) 💛
    preIncrement = counter; // 그래서 하나가 증가한 상태(3)에서 이 값이 preIncrement 에 할당 💛
    → 💚 部分コードと💛 一部のコードは同じコードです.

    3-2. postIncrement


    変数に++を加えてpostIncrementと呼ぶ.
    let counter = 2;
    const postIncrement = counter++; 🧡
    // 먼저 변수의 값을 postIncrement에 할당한 다음에 그 뒤에 counter 값을 1을 증가시킨다.
    let counter = 2;
    postIncrement = counter; // 먼저 변수의 값을 postIncrement에 할당한 다음에 🤎
    counter = counter + 1;   // 그 뒤에 counter의 값을 1 증가시킨다. 🤎
    → 🧡 部分コードと🤎 一部のコードは同じコードです.

    3-3. preDecrement

    preIncrementのようです.--度と同じです.は、値を1つずつ減らし、前から割り当てを更新します.
    let counter = 3;
    const preDecrement = --counter; //2
    let counter = 3;
    counter = counter - 1;
    preDecrement = counter;

    3-4. postDecrement

    postIncrementと同じです.--は、1つ1つの減算値であり、後続は割り当てられた更新であり、後続は更新である.
    let counter = 3;
    postDecrement = counter--;
    let counter = 3;
    postDecrement = counter;
    counter = counter - 1;

    4. Assignment operators


    割り当てられたオペレータ.
    let x = 3;
    let y = 6;x += yの意味はx=x+yx -= yの意味はx=x-yx *= yの意味はx=x*yx /= yの意味はx=x/y

    5. Comparison operators

    10 < 6 less than10 <= 6 less than or equal10 > 6 greater than10 >= 6 greater than or equal

    6. Logical operators: || , && , ! ⚡️


    6-1. || (or)


    複数の演算子のうち1つがtrueの場合はtrueを返します.
    const value1 = false; //false
    const value2 = 4 < 2; //false
    
    console.log(`or: ${value1 || value2 || check()}`);
    // 😛 (10번)
    // or: true
    
    function check() {
      for (let i = 0; i < 10; i++) {
        //wasting time
        consol.log('😛');
      }
      return true;
    } // check라는 함수는, 앞에서 시간을 조금 낭비하다가 결국 true를 return 해주는 함수이다.
    🚨 or演算子の重要なポイント!
    →or演算子は、trueが最初に発生したときに停止します.orのいずれかがtrueだからそれがtrueだしたがって、上記のコードではvalue 1がtrueであれば、最初がtrueであり、後のcheck関数は再実行する必要がなく、無駄にならないため、コンソールウィンドウ😛 これも出力しません.
    つまり、計算量の大きい関数を呼び出したり、式を一番前にしたりすると、?🥵
    もちろん簡単に一番前に置いて、これらがfalseの時だけ、やっと最後に重いものを呼んだほうがいいです.👏🏻✨👍🏻

    6-2. && (and)


    trueを返すには、複数の演算子のいずれかがtrueである必要があります.
    次のコードはvalue 1がfalseであればgame setです!
    后ろが本当かどうかはすべてすでに破れて、后ろの値は何でも構いません.したがってvalue 2とcheckは実行できません.
    const value1 = false; //false
    const value2 = 4 < 2; //false
    
    console.log(`and: ${value1 && value2 && check()}`);
    
    function check() {
      for (let i = 0; i < 10; i++) {
        //wasting time
        consol.log('😛');
      }
      return true;
    }
    🚨 だから(and)重い操作ほど、一番後ろでチェックしたほうがいいです!
    🤚🏻 また、andは簡単なnull検査にもよく用いられる.
  • often used to compress long if-statement
  • nullableObject && nullableObject.something
    →オブジェクトがnullの場合falseになるため、nullabeObject.somethingは実行できません.
    →つまり、nullでない場合(=true)のみnullableObjectのsomethingが受信されます.
  • if (nullableObject != null) {
      nullableObject.something;
    }
    // nullableObjeect 가 null이 아니라면, nullableObject의 something을 받아와라

    6-3. ! (not)


    not演算子値を反転
    const value1 = true; //ture
    
    console.log(!value1); //false
    →value 1はtrueなので、not演算子はfalseに値を逆に出力します.

    7. Equality


    7-1. == loose equality, with type conversion


    (タイプ変更でチェック)
    const stringFive = '5';
    const numberFive = 5;
    
    console.log(stringFive == numberFive); //true
    console.log(stringFive != numberFive); //false

    7-2. === strict equality, no type conversion


    △確認タイプに注意し、タイプが異なる場合は他の子です.推奨
    const stringFive = '5';
    const numberFive = 5;
    
    console.log(stringFive === numberFive); //false
    console.log(stringFive !== numberFive); //true

    7-3. object equality by reference


    学習が平等な場合は、学習対象に注意する必要があります.
    const mark1 = { name: 'mark' , age: 24};
    const mark2 = { name: 'mark' , age: 24};
    const mark3 = mark1;
    
    console.log(mark1 == mark2); //false
    console.log(mark1 === mark2); //false
    console.log(mark1 === mark3); //ture
    🤔 mark1mark2が異なるのは、それぞれ異なる参照が格納されているからである.
    🤔 mark1mark3が同じであるのは、mark 1が持つ参照値がmark 3として指定されているため、同じ参照があるからである.

    objectはメモリにロードされたときにreference形式で格納されます.上から見ると、mark 1とmark 2は同じデータを含むobjectであるが、実際にはmark 1とmark 2のメモリにはそれぞれ異なるreferenceが含まれており、その異なるreferenceは異なるobjectを指す.また、mark 3にはmark 1のreferenceも割り当てられているので、同じreferenceを有する.