目次
- window.globalThis
- window.Infinity
- window.NaN
- window.undefined
1. globalThis
globalThis はグローバルプロパティで、グローバルオブジェクトと同等であるグローバルな this が格納されています。
function canMakeHTTPRequest() {
return typeof globalThis.XMLHttpRequest === 'function';
}
console.log(canMakeHTTPRequest());
// expected output (in a browser): true
2. Infinity
グローバルプロパティ Infinity は無限大を表す数値です。
const maxNumber = Math.pow(10, 1000); // max positive number
if (maxNumber === Infinity) {
console.log('Let\'s call it Infinity!');
// expected output: "Let's call it Infinity!"
}
console.log(1 / maxNumber);
// expected output: 0
3. NaN
グローバルプロパティ NaN は非数 (Not-A-Number) を表す値です。
function sanitise(x) {
if (isNaN(x)) {
return NaN;
}
return x;
}
console.log(sanitise('1'));
// expected output: "1"
console.log(sanitise('NotANumber'));
// expected output: NaN
4. undefined
グローバルの undefined プロパティはプリミティブ値の undefined を表します。これは JavaScript におけるプリミティブ型の一つです。
undefinedは、宣言のみが行われた変数、あるいは実引数が存在しない仮引数に自動的に割り当てられるプリミティブ値のことです。
function test(t) {
if (t === undefined) {
return 'Undefined value!';
}
return t;
}
let x;
console.log(test(x));
// expected output: "Undefined value!"
/////////////////////////////////////
var x; //値を代入しない変数
console.log("x's value is", x) //ログ:"x's value is undefined"
7. KnotTextでのECMAScriptの分類
参考:MDN Web DocsでのECMAScriptの分類
7-1-3. グローバルオブジェクトのコンストラクタープロパティ
コンストラクターとは、「オブジェクトを作成する能力を持たせた」関数で、「new」演算子によってオブジェクトインスタンスを作成することができる。
| プリミティブデータ型のラッパーオブジェクト | |
|---|---|
| 真偽値 | window.Boolean() |
| 文字列 | window.String() |
| 数値 | window.Number() |
| window.BigInt() | |
| シンボル | window.Symbol() |
| オブジェクトのためのオブジェクト |
|---|
| window.Object() |
| 関数のためのオブジェクト | |
|---|---|
| window.Function() | |
| 関数のより高度なオブジェクト | window.GeneratorFunction() |
| window.Generator() | |
| window.AsyncFunction() | |
| window.Promise() | |
| 配列のためのオブジェクト | ||
|---|---|---|
| window.Array() | ||
| 配列のより高度なオブジェクト | window.ArrayBuffer() | |
| window.DataView() | ||
| window.SharedArrayBuffer() | ||
| 型付き配列のためのオブジェクト | window.Int8Array() | window.Int16Array() |
| window.Uint8Array() | window.Uint16Array() | |
| window.Uint8ClampedArray() | ||
| window.Int32Array() | window.BigInt64Array() | |
| window.Uint32Array() | window.BigUint64Array() | |
| window.Float32Array() | window.Float64Array() | |
| 日付・時刻のためのオブジェクト |
|---|
| window.Date() |
| 正規表現のためのオブジェクト |
|---|
| window.RegExp() |
| エラーのためのオブジェクト | |
|---|---|
| window.Error() | window.EvalError() |
| AggregateError | |
| InternalError | |
| window.RangeError() | |
| window.ReferenceError() | |
| window.SyntaxError() | |
| window.TypeError() | |
| URIError | |
| Managing Memory |
|---|
| window.WeakRef() |
| Reflection |
|---|
| window.Proxy() |
7-1-4. グローバルオブジェクトのその他のプロパティ
| Atomics |
|---|
| window.Atomics() |
| JSON |
|---|
| window.JSON() |
| Math |
|---|
| window.Math() |
| Reflect |
|---|
| window.Reflect() |
7-2. ECMAScriptの演算子「計算・論理・代入」
7-2-1. ECMAScriptの演算子「計算」
7-2-2. ECMAScriptの演算子「論理」
7-2-3. ECMAScriptの演算子「代入」
7-3. ECMAScriptのステートメント
| block ステートメント | ブロックを作る | |
|---|---|---|
| if ステートメント(else) | 条件を作る | |
| イテレーションステートメント | do-while ステートメント | 必ず1回は実行されるwhileステートメント |
| while ステートメント | 条件を満たすまで繰り返す | |
| for ステートメント | 指定した回数まで繰り返す | |
| for-in ステートメント | オブジェクトのためのforステートメント | |
| for-of ステートメント | 配列状のオブジェクト全般のためのforステートメント | |
| for-await-of ステートメント | Promiseオブジェクトのためのfor-ofステートメント | |
| continue ステートメント | 繰り返しの処理をスキップして次の繰り返しへ進む | |
| break ステートメント | 繰り返し・ラベル・switchステートメントの処理を中断してステートメントから抜け出す | |
| switch ステートメント(case, default) | 条件に一致するcaseを実行する | |
| throw ステートメント | 関数の中で例外を発生させ、catchが存在すればcatchに移行する。 | |
| try ステートメント(catch, finally) | catchのためのfinallyでtryする? | |
7-4. オブジェクトのためのパーツ
| instanceof | オブジェクトが自身のプロトタイプにコンストラクタのprototype プロパティを持っているか判別する |
|---|---|
| new | new 演算子を使用すると、開発者はユーザー定義のオブジェクト型やコンストラクタ関数を持つ組み込みオブジェクト型のインスタンスを作成することができる |
| delete | オブジェクトからプロパティを削除する |
| in | 指定されたプロパティが指定されたオブジェクトにある場合にtrueを返す |
| super | オブジェクトの親の関数を呼び出すために使用できる |
| プロパティアクセッサー | オブジェクトのプロパティにアクセスする2種類の方法(ドット表記法、ブラケット表記法) |
| オブジェクトリテラル | Object initializerによって作成するオブジェクト |
7-5. 配列のためのパーツ
| 配列リテラル | [a, b] = [1, 2] 代入 = [] 配列をつくる 配列リテラル 「配列」オブジェクト 配列初期化 Array()でも可 |
|---|
7-6. 関数のためのパーツ
| function | キーワード いわゆるexpression 関数を作成する |
|---|---|
| return ステートメント | |
| this | [関数] キーワード |
| function* | [ジェネレータオブジェクトを返す、ジェネレータ関数を定義] |
| yield(yield*) | ジェネレータ関数 キーワード |
| async function | キーワード 非同期関数 |
| await | Promiseオブジェクト 非同期関数内のみ |
| class(extends) | いわゆるexpression ECMAScript 2015~のclass定義 |
7-7. その他のパーツ
| use strictモード | |
|---|---|
| ,(comma) 演算子 | それぞれの演算対象を(左から右に)評価し、最後のオペランドの値を返します。これにより、複数の式が評価される複合式を作成することができ、複合式の最終値はそのメンバー式の一番右端の値となります。これは、for ループに複数の引数を提供する場合によく使用されます。 |
| typeof 演算子 | 対象の値のデータ型を返す |
| void 演算子 | 必ずundefinedを返す |
| ?.(Optional chaining) 演算子 | 接続されたオブジェクトチェーンの深くに位置するプロパティの値を、チェーン内の各参照が正しいかどうかを明示的に確認せずに読み込むことを可能にします。 |
| labeled ステートメント | ラベル付け? |
| import | |
| export |