・変数宣言(var,let,const)をしないとすべてグローバル変数になる(関数で厄介)。
・Functionコンストラクター(new Function)は、関数内部でもその配下の変数は全てグローバルスコープとみなされるので、利用はおすすめしない。
・与える因数の数が、関数側で要求する数と異なる場合も、チェックしない(エラーにならない)。
・引数は、後ろの引数だけ省略できる。
・高階関数で配列をリスト化したり合計値を算出したりできる。
・スコープチェーンとは、グローバルオブジェクトとCallオブジェクト(ローカル変数)を生成の順に連結したリスト。変数のメカニズムがわかる。
・関数リテラルは、匿名(無名)関数を使用する。
・closure関数が呼び出されると、
・匿名関数(関数名を記述せずに引数や代入に使用する関数
例:const myfunc = function (name))を表すCallオブジェクト(ローカル変数)
・closure関数のCallオブジェクト
・グローバルオブジェクト
というスコープチェーンが形成される。
・プロパティの宣言→コンストラクターで・メソッドの宣言→プロトタイプで
・プロパティの宣言 → コンストラクターで
・メソッドの宣言 → プロトタイプで
・静的メソッド、プロパティ ↔︎ インスタンスメソッド、プロパティ
・グローバル変数はできるだけ減らすこと(多いとややこしくなる)、そのために静的メンバーを使うこと
・プロトタイプチェーン・・・暗黙の参照で継承関係している。終端には必ず、Object.Prototypeがある。インスタンスが生成された時点で固定され、その後の変更にかかわらず保存される。
・querySelector(All)はより細かいものまで特定できるが、低速なので単純なものはgetElemnt~にする。
・タグ内のJSは、イベントハンドラーの呼び出し程度にすること。
・ページの初期化処理は、DOMContentLoadedイベントリスナーで表すのが基本
・getAttribute/setAttributeメソッドは、
・HTMLとJavaScriptとで名前の相違を意識する必要がない
・(文字列として指定できるので) 取得/設定する属性名を、スクリプトから動的に変更できる
・一般的には、HTML文字列を埋め込むのでなければ、まずはtextContentプロパティを優先して利用することをおすすめ(読み込みの速さなど)
・ユーザーからの入力値など外部からの入力値を、innerHTMLプロパティで出力しないこと(不特定のユーザーのブラウザー上で勝手に実行されてしまう可能性がある)
・引数(ひきすう)とは関数に与える追加情報
参考
JavaScript本格入門