zashii-1434

Stats of My Life(おいしい人生を味わうために、コツコツとチャレンジしたことを書くブログ)

「JavaScript本格入門」読みました。(2017年34冊)

 

 

 

❏感想

業務でJavaScriptは使っていないですが、趣味でt少しはJavascript触っているからだいたいわかるだろうと思っていたところ、まだまだ自分が知らないこと、理解できていないことはたくさんありました。

 

プログラムの本は自分でコーディングして、実行結果を見ながら学ぶのが一番ですが本ブラグは「感想」なので、本書を読んで書いたコードは別ブログとしてUPしようと思います。

 

本書はかなり実践的、かつ詳しく書かれているので初心者はもちろん、JavaScriptをなんとなく書いてきた私にとっては基本からきちんと学ぶことができるいい本だと思いました。

 

オススメです。

 

❏メモ(きちんと学び直すところ)

演算子

 ・ビット論理演算子⇒2ビットの論理計算

 ・delete演算子⇒オブジェクトのプロパティを破棄

 ・typeof演算子⇒オブジェクトに指定した変数・リテラルのデータ型を表す文字列を返す

・制御構文

 ・switch式とcase値は「===」演算子で比較する

・Strictモードにするメリット

 ・非JavaScriptで変更される点を禁止することで、今後の移行が簡単になる

 ・将来のJavaScriptで変更される点を禁止することで、今後の移行が簡単になる

 ・JavaScriptの「べからず」を理解する手がかりになる

・Stringオブジェクト

 ・substring/sliceメソッド⇒開始位置~終了文字位置の範囲で抽出箇所を指定

 ・substrメソッド⇒開始位置からの文字数指定で抽出箇所を指定

 ・サロゲートペア⇒2バイトで表現できない文字を4バイトと見なす

・Numberオブジェクト

 ・NaNはすべての値と等しくない

 ・「-」演算子では、与えられたオペランドのいずれかが数値である場合に、もう片方も自動的に数値に変換して減算

 (例)  console.log(typeof('123' - 0)); //結果:number

 ・「+」演算子では、与えられたオペランドのいずれかが文字列である場合に、もう片方も自動的に文字列にする

 (例)console.log(typeof(123 + '')); //結果:string

 

・Symbolオブジェクト

 ・定数の値として利用する

 

・Arrayオブジェクト

 ・Spliceメソッド⇒配列の任意の箇所に要素を追加したり、既存の要素を置き換えたり削除したりができる

 ・forEachメソッド⇒配列内の要素を、指定した関数で順に処理するためのメソッド

 ・mapメソッド⇒mapメソッドを利用することで、配列を指定された関数で加工する

 ・someメソッド⇒指定された関数で個々の要素を判定し、1つでも条件に合致する要素があればtrueを返す

 ・filterメソッド⇒配列の内容を特定の条件で絞り込む

 ・sortメソッド⇒独自のルールで配列を並べ替える(大小の比較方法注意)

RegExpオブジェクト

 ・matchメソッド⇒正規表現パターンにマッチした文字列を配列として返す

 ・execメソッド⇒最後にマッチした文字位置を記憶する機能を持っている。そして次回のexecメソッドを実行する際、RegExpオブジェクトは「前回のマッチ位置から検索を再開」する

 ・testメソッド⇒与えられた文字列を検索し、その結果を真偽値として返す

 ・searchメソッド⇒マッチした文字列が存在しない場合に、戻り値として-1を返す

 ・split⇒正規表現で文字列を分割

・オブジェクト

 ・valueOfメソッド⇒文字列以外の基本型の値が返されることを「期待して」使われる

 ・assignメソッド⇒オブジェクトをマージする

 ・createメソッド⇒オブジェクトを生成する

 

・Globalオブジェクト

 ・グローバル変数やグローバル関数を管理するために、JavaScriptが自動的に生成する便宜的なオブジェクト

 ・encodeURI/encodeURIComponent関数⇒エスケープ処理

 ・eval関数⇒与えられた文字列をJavaScriptのコードとして評価/実行する。

 

・関数

 ・function命令⇒関数を直接定義

 ・関数リテラル⇒「function(base,height){...}」と名前のない関数を定義したうえで、変数に格納

 ・アロー関数⇒関数よりも簡単に宣言できる

 ・var命令を使わずに宣言された変数はすべてグローバル変数とみなす

 ・ローカル変数を定義するには、必ずvar命令を使用する 

var命令を使わずに宣言された変数はすべてグローバル変数と見なす

  ・JavaScriptは引数の数をチェックしない

 ・可変長引数の関数を定義することもできる

 ・ES2015可変長引数の関数定義⇒仮引数の前に「...」を付与する

 ・複数の戻り値を個別の変数に代入する 

 (例)let [max,min] = getMaxMin(10,35,-5,78,0);

    ・再帰関数⇒手続きを何度も呼び出せる

 ・高階関数⇒関数を引数、戻り値として扱う関数

 ・コールバック関数⇒呼び出し先の関数の中で呼び出される関数のこと

 ・スコープチェーン⇒グローバルオブジェクト、Callオブジェクトを生成の順に連結したリストのこと

 ・クロージャ⇒ローカル変数を参照している関数内関数のこと

 

オブジェクト指向

 

 ・プロトタイプ⇒あるオブジェクトの元となるオブジェクトのこと。言い換えれば、より縛りの弱いクラスのこと

 ・コンストラクターでのthis⇒コンストラクターによって生成されるインスタンスを表すもの

 ・メソッドはプロトタイプで宣言する⇒無駄なメモリ消費を回避するため

 ・オブジェクトリテラルでプロトタイプを定義⇒記述を最小限に

 ・プロトタイプチェーン⇒オブジェクトの継承

 ・プライベートメンバーはコンストラクター関数で定義する

 -var プロパティ名

   -var メソッド名 = function(引数, ...) {}

     ・アクセサーメソッドの実装はObject.definePropertyメソッドを使う

 ・クラス名が競合しないよう、パッケージを作ることも可能

 ・ES2015のオブジェクト構文⇒class命令

 ・モジュール作成⇒export

 ・イテレーター⇒オブジェクトの内容を列挙するための仕組みを備えたオブジェクト

 ・Proxy⇒オブジェクトの基本的な動作を、アプリ独自の動作に差し替えるためのオブジェクト

 

・DOM

 ・id値をキーに要素を取得する⇒getElementByIdメソッド
 ・タグ名をキーに要素を取得する⇒getElementsByTagNameメソッド
 ・name属性をキーに要素を取得する⇒getElementsByNameメソッド
 ・class属性をキーに要素を取得する⇒getElementsByClassNameメソッド

JavaScriptからスタイルシートを操作する

 ・インラインスタイルにアクセスする(styleプロパティ)
 ・外部のスタイルシートを適用する(classNameプロパティ)