JSprimerの読み直し
20220811〜
気になった・理解が浅い・後で調べる、、など。(理解できていることは書かない)
JavaScriptは動的型付け言語に分類される言語であるため、静的型付け言語のような変数の型はない。
しかし、文字列、数値、真偽値といった値の型は存在し、 これらの値の型のことをデータ型と呼ぶ。
プリミティブ型(基本型)は、真偽値や数値などの基本的な値の型のこと、一度作成したらその値自体を変更できないというイミュータブル(immutable)の特性を持つ
オブジェクト(複合型)・・・プリミティブ型ではないもの、複数のプリミティブ型の値またはオブジェクトからなる集合、ミュータブル(mutable)の特性を持つ、値そのものではなく値への参照を経由して操作されるため「参照型のデータ」とも呼ばれる
typeof演算子を使うとデータ型を調べることができる。 console.log(typeof "JavaScript"); // => "string"
基本的にtypeof演算子はプリミティブ型またはオブジェクトかを判別するもの
文字列リテラルを囲むダブルクォーテーション、シングルクォーテーション、バックスラッシュは全て同じ意味
ラッパーオブジェクトは、new演算子と対応するコンストラクタ関数を利用して作成できる。真偽値(Boolean)、数値(Number)、文字列(String)
ES2015では文字列(Stringオブジェクト)にincludesメソッドが実装された。 includesメソッドは指定した文字列が含まれているかを真偽値で返す。
カンマ演算子(,)は、カンマ(,)で区切った式を左から順に評価し、 最後の式の評価結果を返す。
falsyな値はfalseになる、falsyでない値はtrueになる
falsyな値とは次の7種類の値のこと、false、undefined、null、0、0n、NaN、 ""(空文字列)
暗黙的な型変換は意図しない結果となりやすいため避ける
code:js.js
// 関数宣言
function 関数名(仮引数1, 仮引数2) {
// 関数が呼び出されたときの処理
// ...
return 関数の返り値;
}
// 関数呼び出し
const 関数の結果 = 関数名(引数1, 引数2);
console.log(関数の結果); // => 関数の返り値
// 関数式
const 変数名 = function() {
// 関数を呼び出したときの処理
// ...
return 関数の返り値;
};
// Arrow Functionを使った関数定義
const 変数名 = () => {
// 関数を呼び出したときの処理
// ...
return 関数の返す値;
};
function 高階関数(コールバック関数) {
コールバック関数();
}
関数はオブジェクト、ファーストクラスファンクション(第一級関数)
Arrow Functionの特徴
名前をつけることができない(常に匿名関数)
thisが静的に決定できる
functionキーワードに比べて短く書くことができる
newできない(コンストラクタ関数ではない)
arguments変数を参照できない
文の末尾にはセミコロンをつける
ブロックで終わる文は例外的にセミコロンをつけなくてよい
iterableオブジェクト・・・ArrayとString
オブジェクトはプロパティの集合、プロパティとは名前(キー)と値(バリュー)が対になったもの
プロパティのキーには文字列またはSymbolが利用でき、値には任意のデータを指定できる
code:js.js
プロパティへのアクセス
const obj = {
key: "value"
};
// ドット記法で参照
console.log(obj.key); // => "value"
// ブラケット記法で参照
console.log(obj"key"); // => "value" JavaScriptのconstは値を固定するのではなく、変数への再代入を防ぐためのもの
配列に存在しないインデックスに対してアクセスした場合に、例外ではなくundefinedを返す
配列リテラルでは値を省略することで未定義の要素を含めることができる。配列の中に隙間があるものを疎な配列、隙間がなくすべてのインデックスに要素がある配列を密な配列と呼ぶ
Array.isArrayメソッドは引数が配列ならばtrueを返す
Object.hasOwn静的メソッドを使うと配列オブジェクトに対して指定したインデックスに要素自体が存在するかを判定できる
code:js.js
// 要素自体は存在し、その値がundefined
console.log(Object.hasOwn(denseArray, 1)); // => true
// 要素自体が存在しない
console.log(Object.hasOwn(sparseArray, 1)); // => false
変数を参照できる範囲を小さくする