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や引数を固定できる