Open1

javaScriptノート

どるあがどるあが

実行環境

グローバルオブジェクト

JavaScript実行前にはグローバルオブジェクトthisが準備される
ブラウザのグローバルオブジェクトはWindowオブジェクト

グローバルスコープ

Windowオブジェクト=グローバルスコープ(=スクリプトスコープ)

ブロックスコープ

{}の中でletまたはconstを使うことで有効になる。varだけではブロックスコープは無効。
そもそもvarは非推奨だけど。
if() {}で使われる{}はブロックスコープ。これは知らなかった。

クロージャー

関数名だけだと関数そのもの。例:increment
()をつけると実行される。例:increment()

main.js
const incrementFactory = () => {
  //プライベート変数の定義が出来ている
  //incrementFactoryの実行時にのみ初期化される
  let num = 0;

  const increment = () => {
    num = num + 1;
    console.log(num);
  };

  return increment;
};

const increment = incrementFactory();

increment(); // 1
increment(); // 2
increment(); // 3

比較演算子

厳格な等価性 型の比較あり ===
抽象的な等価性 型の比較なし ==

参照

JavaScriptのコピーはかなりややこしいな

とにかく、値コピーと参照コピー、どちらなのかを正確に知る必要がある
オブジェクトのコピーは参照アドレスをコピーしてそのアドレスを参照していることをちゃんと理解

const a = {
  let val = 1;
}

const b = a; // aのオブジェクトの参照のコピーを行っているため、プロパティの変更もできる

関数

オーバーロードできない

引数の数は違う関数にならない。

bind

関数.bind(オブジェクト)
thisの参照先がオブジェクトになる
thisや引数を固定できる