- Q1
Promiseとは何ですか?
ANSWER非同期処理の結果を表すオブジェクトクリックして解説を表示EXPLANATIONPromiseは「非同期処理の結果を表すオブジェクト」です。処理が成功(fulfilled)か失敗(rejected)かの状態を持ち、結果を後から取得できます。
- Q2
Promiseの3つの状態は何ですか?
ANSWERpending, fulfilled, rejectedクリックして解説を表示EXPLANATIONPromiseは
pending(待機中)、fulfilled(成功)、rejected(失敗)の3つの状態を持ちます。一度settled(fulfilledまたはrejected)になると状態は変わりません。 - Q3
Promiseを作成する正しい書き方はどれですか?
ANSWERnew Promise((resolve, reject) => { })クリックして解説を表示EXPLANATIONPromiseは
new Promise((resolve, reject) => { })の形で作成します。resolveで成功、rejectで失敗を通知します。 - Q4
then()メソッドは何をしますか?ANSWER成功時のコールバックを登録するクリックして解説を表示EXPLANATIONthen()はPromiseが成功(fulfilled)したときに実行するコールバック関数を登録します。また、新しいPromiseを返すのでチェーンできます。 - Q5
次のコードを実行すると何が表示されますか?
Promise.resolve(42) .then(value => console.log(value));ANSWER42クリックして解説を表示EXPLANATIONPromise.resolve(42)は値42で即座に成功するPromiseを作成します。then()でその値を受け取り、42が表示されます。 - Q6
catch()メソッドは何をしますか?ANSWER失敗時のコールバックを登録するクリックして解説を表示EXPLANATIONcatch()はPromiseが失敗(rejected)したときに実行するコールバック関数を登録します。エラーハンドリングに使います。 - Q7
次のコードを実行すると何が表示されますか?
Promise.reject(new Error("失敗")) .catch(e => console.log("エラー捕捉"));ANSWERエラー捕捉クリックして解説を表示EXPLANATIONPromise.reject()は失敗するPromiseを作成します。catch()でエラーを捕捉し、「エラー捕捉」が表示されます。 - Q8
finally()メソッドは何をしますか?ANSWER成功・失敗に関わらず必ず実行されるクリックして解説を表示EXPLANATIONfinally()はPromiseの成功・失敗に関わらず必ず実行されるコールバックを登録します。クリーンアップ処理などに使います。 - Q9
Promise.all()は何をしますか?ANSWERすべてのPromiseが成功したら結果の配列を返すクリックして解説を表示EXPLANATIONPromise.all()は複数のPromiseを並列実行し、すべてが成功したら結果の配列を返します。1つでも失敗すると即座に失敗します。 - Q10
次のコードを実行すると何が表示されますか?
Promise.all([ Promise.resolve(1), Promise.resolve(2), Promise.resolve(3) ]).then(values => console.log(values));ANSWER[1, 2, 3]クリックして解説を表示EXPLANATIONPromise.all()はすべてのPromiseの結果を配列として返します。結果は[1, 2, 3]です。
- Q11
Promise.all()で1つのPromiseが失敗するとどうなりますか?ANSWER即座に失敗するクリックして解説を表示EXPLANATIONPromise.all()は1つでもPromiseが失敗すると、他の結果を待たずに即座に失敗(reject)します。 - Q12
Promise.race()は何をしますか?ANSWER最初に完了したPromiseの結果を返すクリックして解説を表示EXPLANATIONPromise.race()は複数のPromiseのうち、最初に完了した(成功または失敗した)Promiseの結果を返します。 - Q13
Promise.allSettled()は何を返しますか?ANSWER各Promiseの状態と値を含むオブジェクトの配列クリックして解説を表示EXPLANATIONPromise.allSettled()はすべてのPromiseが完了するまで待ち、各Promiseの成功/失敗の状態と値を含むオブジェクトの配列を返します。 - Q14
Promiseチェーンとは何ですか?
ANSWERthenを連続して繋げて順番に処理することクリックして解説を表示EXPLANATIONPromiseチェーンは
then()を連続して繋げることで、非同期処理を順番に実行する方法です。前の処理の結果を次の処理に渡せます。 - Q15
次のコードを実行すると何が表示されますか?
Promise.resolve(1) .then(x => x + 1) .then(x => x * 2) .then(x => console.log(x));ANSWER4クリックして解説を表示EXPLANATIONPromiseチェーンで値が変換されていきます。1 → 2(+1)→ 4(*2)で、結果は4です。
- Q16
asyncキーワードは何をしますか?ANSWER関数が必ずPromiseを返すようにするクリックして解説を表示EXPLANATIONasyncを関数の前に付けると、その関数は必ずPromiseを返すようになります。awaitを使えるようになります。 - Q17
awaitキーワードは何をしますか?ANSWERPromiseの完了を待って結果を取得するクリックして解説を表示EXPLANATIONawaitはPromiseの完了を待ち、その結果を取得します。async関数の中でのみ使用できます。 - Q18
次のコードを実行すると何が表示されますか?
async function test() { const result = await Promise.resolve(10); return result * 2; } test().then(v => console.log(v));ANSWER20クリックして解説を表示EXPLANATIONawaitでPromiseの結果10を取得し、2倍して返します。async関数の戻り値はPromiseにラップされるので、then()で20を受け取ります。 - Q19
async/awaitでエラーをハンドリングするにはどうしますか?ANSWERtry-catch文を使うクリックして解説を表示EXPLANATIONasync/awaitではtry-catch文を使ってエラーをハンドリングします。awaitした処理が失敗するとcatchブロックに入ります。 - Q20
次のコードを実行すると何が表示されますか?
async function test() { try { await Promise.reject(new Error("失敗")); console.log("A"); } catch (e) { console.log("B"); } } test();ANSWERBクリックして解説を表示EXPLANATIONawaitしたPromiseが失敗すると例外が投げられ、catchブロックに入ります。「B」が表示されます。
- Q21
awaitを使わずに複数の非同期処理を並列実行するにはどうしますか?ANSWERPromise.all()と組み合わせるクリックして解説を表示EXPLANATIONPromise.all()と組み合わせることで、複数の非同期処理を並列実行し、すべての完了を待てます。 - Q22
次のコードを実行すると、処理にかかる時間は約何秒ですか?
async function test() { const [a, b] = await Promise.all([ new Promise(r => setTimeout(() => r(1), 1000)), new Promise(r => setTimeout(() => r(2), 1000)) ]); return a + b; }ANSWER約1秒クリックして解説を表示EXPLANATIONPromise.all()で2つの1秒待つ処理を並列実行するので、合計で約1秒かかります(順次実行なら2秒)。 - Q23
トップレベル
awaitとは何ですか?ANSWERモジュールの最上位でawaitを使える機能クリックして解説を表示EXPLANATIONトップレベル
awaitはモジュールの最上位(async関数の外)でawaitを使える機能です。ES2022で導入されました。 - Q24
async/awaitとthen()チェーンの違いは何ですか?ANSWER同期的な書き方で読みやすいクリックして解説を表示EXPLANATIONどちらも同じことができますが、
async/awaitの方が同期的なコードのように書けて読みやすく、try-catchでエラーハンドリングできます。 - Q25
クロージャとは何ですか?
ANSWER関数と定義時の環境への参照を保持する仕組みクリックして解説を表示EXPLANATIONクロージャは「関数とその関数が定義された時点のレキシカル環境(変数)への参照を保持する仕組み」です。外側の変数にアクセスし続けられます。
- Q26
次のコードを実行すると何が表示されますか?
function outer() { let count = 0; return function() { count++; return count; }; } const counter = outer(); console.log(counter()); console.log(counter());ANSWER1, 2クリックして解説を表示EXPLANATION内部関数はクロージャにより
count変数への参照を保持します。呼び出すたびにcountが増加し、1, 2と表示されます。 - Q27
クロージャの主な用途は何ですか?
ANSWERプライベート変数の実現や状態の保持クリックして解説を表示EXPLANATIONクロージャはプライベート変数の実現、状態の保持、関数ファクトリの作成などに使われます。
- Q28
次のコードを実行すると何が表示されますか?
function createMultiplier(factor) { return function(number) { return number * factor; }; } const double = createMultiplier(2); console.log(double(5));ANSWER10クリックして解説を表示EXPLANATIONcreateMultiplier(2)はfactorが2のクロージャを返します。double(5)は5 * 2 = 10を返します。 - Q29
クロージャでよくある問題は何ですか?
ANSWERループ内で同じ変数を参照してしまうクリックして解説を表示EXPLANATIONループ内でクロージャを作ると、すべてのクロージャが同じ変数を参照してしまう問題があります。
letを使うか即時関数で回避できます。 - Q30
次のコードを実行すると何が表示されますか?
for (let i = 0; i < 3; i++) { setTimeout(() => console.log(i), 0); }ANSWER0, 1, 2クリックして解説を表示EXPLANATIONletはブロックスコープなので、各イテレーションで新しいiが作られます。0, 1, 2が表示されます。
- Q31
次のコードで
varを使うと何が表示されますか?for (var i = 0; i < 3; i++) { setTimeout(() => console.log(i), 0); }ANSWER3, 3, 3クリックして解説を表示EXPLANATIONvarは関数スコープなので、ループ終了後のi(3)がすべてのクロージャで共有されます。3, 3, 3が表示されます。 - Q32
プロトタイプとは何ですか?
ANSWERオブジェクトが他のオブジェクトから継承する仕組みクリックして解説を表示EXPLANATIONプロトタイプは「オブジェクトが他のオブジェクトからプロパティやメソッドを継承する仕組み」です。JavaScriptの継承の基盤となっています。
- Q33
__proto__とprototypeの違いは何ですか?ANSWER__proto__はインスタンスの、prototypeは関数のプロパティクリックして解説を表示EXPLANATION__proto__はオブジェクトが持つプロトタイプへの参照、prototypeは関数(コンストラクタ)が持つ、インスタンスのプロトタイプになるオブジェクトです。 - Q34
プロトタイプチェーンとは何ですか?
ANSWERプロパティを探すときにプロトタイプを辿る仕組みクリックして解説を表示EXPLANATIONプロトタイプチェーンは、オブジェクトのプロパティを探すときにプロトタイプを辿っていく仕組みです。見つかるか
nullに達するまで続きます。 - Q35
次のコードを実行すると何が表示されますか?
const obj = {}; console.log(obj.toString());ANSWER[object Object]クリックして解説を表示EXPLANATIONobj自体にtoStringはありませんが、プロトタイプチェーンでObject.prototype.toStringが見つかり、[object Object]が返されます。 - Q36
Object.create()は何をしますか?ANSWER指定したプロトタイプを持つ新しいオブジェクトを作成するクリックして解説を表示EXPLANATIONObject.create()は指定したオブジェクトをプロトタイプとする新しいオブジェクトを作成します。 - Q37
Object.getPrototypeOf()は何を返しますか?ANSWERオブジェクトのプロトタイプクリックして解説を表示EXPLANATIONObject.getPrototypeOf()はオブジェクトのプロトタイプ(内部の[[Prototype]])を返します。 - Q38
hasOwnProperty()は何を判定しますか?ANSWERプロパティがオブジェクト自身のものかクリックして解説を表示EXPLANATIONhasOwnProperty()はプロパティがオブジェクト自身のものか(プロトタイプチェーンではなく)を判定します。 - Q39
イベントループとは何ですか?
ANSWER非同期処理を管理するランタイムの仕組みクリックして解説を表示EXPLANATIONイベントループは「コールスタック、タスクキュー、マイクロタスクキューを監視し、非同期処理を管理するJavaScriptのランタイムの仕組み」です。
- Q40
コールスタックとは何ですか?
ANSWER実行中の関数を追跡するスタッククリックして解説を表示EXPLANATIONコールスタックは「現在実行中の関数を追跡するスタック構造のデータ」です。関数が呼ばれるとプッシュ、終了するとポップされます。
- Q41
マイクロタスクとマクロタスクの違いは何ですか?
ANSWERマイクロタスクの方が優先度が高いクリックして解説を表示EXPLANATIONマイクロタスク(Promise等)はマクロタスク(setTimeout等)より優先度が高く、コールスタックが空になると即座に実行されます。
- Q42
次のコードを実行すると、表示される順番はどれですか?
console.log("1"); setTimeout(() => console.log("2"), 0); Promise.resolve().then(() => console.log("3")); console.log("4");ANSWER1, 4, 3, 2クリックして解説を表示EXPLANATION同期処理(1, 4)→マイクロタスク(3)→マクロタスク(2)の順で実行されます。
- Q43
次のコードを実行すると、表示される順番はどれですか?
Promise.resolve().then(() => console.log("1")); queueMicrotask(() => console.log("2")); setTimeout(() => console.log("3"), 0);ANSWER1, 2, 3クリックして解説を表示EXPLANATIONPromiseの
thenとqueueMicrotaskは両方マイクロタスクなので1, 2の順で実行され、その後マクロタスクの3が実行されます。 - Q44
なぜJavaScriptはシングルスレッドですか?
ANSWERDOM操作の安全性のためクリックして解説を表示EXPLANATIONJavaScriptはブラウザのDOM操作を安全に行うためシングルスレッドで設計されています。複数スレッドだとDOMの競合が起きる可能性があります。
- Q45
requestAnimationFrame()はどのタイミングで実行されますか?ANSWER次の画面描画の直前クリックして解説を表示EXPLANATIONrequestAnimationFrame()は次の画面描画の直前に実行されます。アニメーションに適した約60fps(約16ms間隔)で呼ばれます。 - Q46
Fetch APIとは何ですか?
ANSWERHTTP通信を行うためのPromiseベースのAPIクリックして解説を表示EXPLANATIONFetch APIは「HTTP通信を行うためのモダンなJavaScript API」です。Promiseベースで、XMLHttpRequestの代替として使われます。
- Q47
fetch()が返すものは何ですか?ANSWERResponseオブジェクトで解決するPromiseクリックして解説を表示EXPLANATIONfetch()はResponseオブジェクトで解決するPromiseを返します。レスポンスボディは別途メソッドで取得する必要があります。 - Q48
レスポンスボディをJSONとして取得するにはどうしますか?
ANSWERresponse.json()クリックして解説を表示EXPLANATIONResponseオブジェクトの
json()メソッドを呼び出すと、ボディをJSONとしてパースしたPromiseが返されます。 - Q49
次のコードは何をしますか?
fetch('/api/data') .then(response => response.json()) .then(data => console.log(data));ANSWERAPIからJSONデータを取得して表示するクリックして解説を表示EXPLANATION/api/dataにGETリクエストを送り、レスポンスをJSONとしてパースして、その結果をコンソールに表示します。 - Q50
fetch()でPOSTリクエストを送るにはどうしますか?ANSWERfetch(url, { method: 'POST', body: data })クリックして解説を表示EXPLANATION第2引数のオプションオブジェクトで
method: 'POST'を指定し、bodyにデータを設定します。
- Q51
fetch()でネットワークエラーが発生したらどうなりますか?ANSWERPromiseがrejectされるクリックして解説を表示EXPLANATIONネットワークエラー(接続不可など)の場合、Promiseがrejectされます。HTTPエラー(404, 500など)はrejectされず、
response.okで確認します。 - Q52
response.okは何を表しますか?ANSWERステータスコードが200-299かどうかクリックして解説を表示EXPLANATIONresponse.okはHTTPステータスコードが200-299の範囲(成功)かどうかを表す真偽値です。 - Q53
関数型プログラミングの純粋関数とは何ですか?
ANSWER同じ入力で同じ出力を返し、副作用がない関数クリックして解説を表示EXPLANATION純粋関数は「同じ入力に対して常に同じ出力を返し、副作用を持たない関数」です。予測可能でテストしやすいです。
- Q54
高階関数とは何ですか?
ANSWER関数を引数や戻り値として扱う関数クリックして解説を表示EXPLANATION高階関数は「関数を引数として受け取るか、関数を戻り値として返す関数」です。
map、filter、reduceなどが該当します。 - Q55
カリー化(Currying)とは何ですか?
ANSWER複数引数の関数を1引数の関数の連鎖に変換することクリックして解説を表示EXPLANATIONカリー化は「複数の引数を取る関数を、1つの引数を取る関数の連鎖に変換する」テクニックです。部分適用が可能になります。
- Q56
次のコードを実行すると何が表示されますか?
const curry = (a) => (b) => (c) => a + b + c; console.log(curry(1)(2)(3));ANSWER6クリックして解説を表示EXPLANATIONカリー化された関数を順番に呼び出します。
1 + 2 + 3 = 6が表示されます。 - Q57
関数合成(Function Composition)とは何ですか?
ANSWER複数の関数を組み合わせて新しい関数を作ることクリックして解説を表示EXPLANATION関数合成は「複数の関数を組み合わせて新しい関数を作る」テクニックです。
f(g(x))のように関数を連鎖させます。 - Q58
flatMap()メソッドは何をしますか?ANSWERmapしてから1段階フラット化するクリックして解説を表示EXPLANATIONflatMap()はmap()の後にflat(1)を適用した結果を返します。各要素を配列に変換してフラット化するのに便利です。 - Q59
次のコードを実行すると何が表示されますか?
const arr = [1, 2, 3]; const result = arr.flatMap(x => [x, x * 2]); console.log(result);ANSWER[1, 2, 2, 4, 3, 6]クリックして解説を表示EXPLANATION各要素を
[x, x * 2]に変換し、フラット化します。結果は[1, 2, 2, 4, 3, 6]です。 - Q60
正規表現とは何ですか?
ANSWER文字列のパターンを表現するための記法クリックして解説を表示EXPLANATION正規表現は「文字列のパターンを表現するための記法」です。検索、置換、バリデーションなどに使われます。
- Q61
JavaScriptで正規表現を作成する方法はどれですか?
ANSWER/pattern/ または new RegExp("pattern")クリックして解説を表示EXPLANATION正規表現はリテラル記法(
/pattern/)またはコンストラクタ(new RegExp("pattern"))で作成できます。 - Q62
正規表現の
gフラグは何を意味しますか?ANSWERすべてのマッチを検索するクリックして解説を表示EXPLANATIONg(global)フラグは「すべてのマッチを検索する」ことを意味します。なしだと最初のマッチで止まります。 - Q63
正規表現の
iフラグは何を意味しますか?ANSWER大文字小文字を区別しないクリックして解説を表示EXPLANATIONi(ignore case)フラグは「大文字小文字を区別しない」ことを意味します。 - Q64
次のコードを実行すると何が表示されますか?
const regex = /[0-9]+/g; const str = "abc123def456"; console.log(str.match(regex));ANSWER["123", "456"]クリックして解説を表示EXPLANATION[0-9]+は1つ以上の数字にマッチします。gフラグですべてのマッチを配列で返します。結果は["123", "456"]です。 - Q65
test()メソッドは何を返しますか?ANSWERマッチするかどうかの真偽値クリックして解説を表示EXPLANATIONtest()はパターンにマッチするかどうかを真偽値(true/false)で返します。 - Q66
正規表現で「メールアドレスの簡易的なパターン」として適切なのはどれですか?
ANSWER/\S+@\S+.\S+/クリックして解説を表示EXPLANATION/\S+@\S+\.\S+/は「空白以外の文字列 + @ + 空白以外の文字列 + . + 空白以外の文字列」にマッチする簡易パターンです。 - Q67
replace()メソッドで正規表現を使う利点は何ですか?ANSWERパターンマッチと一括置換ができるクリックして解説を表示EXPLANATION正規表現を使うと、パターンにマッチする部分を柔軟に置換でき、
gフラグですべてのマッチを一度に置換できます。 - Q68
Symbolとは何ですか?
ANSWERユニークで不変のプリミティブ値クリックして解説を表示EXPLANATIONSymbolは「ユニーク(一意)で不変のプリミティブ値」です。主にオブジェクトのプロパティキーとして使い、名前の衝突を防ぎます。
- Q69
次のコードを実行すると何が表示されますか?
const sym1 = Symbol("test"); const sym2 = Symbol("test"); console.log(sym1 === sym2);ANSWERfalseクリックして解説を表示EXPLANATIONSymbolは毎回ユニークな値を作成します。同じ説明文字列でも、異なるSymbolになるため
falseです。 - Q70
Mapとは何ですか?
ANSWERキーと値のペアを保持するコレクションクリックして解説を表示EXPLANATIONMapは「キーと値のペアを保持するコレクション」です。オブジェクトと違い、キーに任意の型(オブジェクトも)を使え、挿入順が保持されます。
- Q71
MapとObjectの違いは何ですか?
ANSWERMapはキーに任意の型を使え、順序が保持されるクリックして解説を表示EXPLANATIONMapはキーに任意の型を使え、サイズを
sizeで取得でき、挿入順が保持されます。Objectのキーは文字列かSymbolのみです。 - Q72
次のコードを実行すると何が表示されますか?
const map = new Map(); const key = { id: 1 }; map.set(key, "value"); console.log(map.get(key));ANSWERvalueクリックして解説を表示EXPLANATIONMapはオブジェクトをキーとして使えます。
setで設定した値をgetで取得でき、「value」が表示されます。 - Q73
Setとは何ですか?
ANSWER重複しない値のコレクションクリックして解説を表示EXPLANATIONSetは「重複しない値のコレクション」です。同じ値は1つしか保持されず、挿入順が保持されます。
- Q74
次のコードを実行すると何が表示されますか?
const set = new Set([1, 2, 2, 3, 3, 3]); console.log(set.size);ANSWER3クリックして解説を表示EXPLANATIONSetは重複を許さないので、
[1, 2, 3]の3つの要素だけが保持されます。sizeは3です。 - Q75
WeakMapとは何ですか?
ANSWERキーがオブジェクトで弱い参照を持つMapクリックして解説を表示EXPLANATIONWeakMapは「キーがオブジェクトのみで、弱い参照を持つMap」です。キーのオブジェクトが他から参照されなくなるとガベージコレクトされます。
- Q76
WeakMapとMapの主な違いは何ですか?
ANSWER弱い参照を持ち、キーがオブジェクトのみクリックして解説を表示EXPLANATIONWeakMapはキーがオブジェクトのみ、弱い参照を持ち、列挙不可で、
sizeプロパティがありません。メモリリーク防止に有用です。 - Q77
WeakSetとは何ですか?
ANSWERオブジェクトのみを持ち弱い参照を持つSetクリックして解説を表示EXPLANATIONWeakSetは「オブジェクトのみを値として持ち、弱い参照を持つSet」です。オブジェクトが他から参照されなくなるとガベージコレクトされます。
- Q78
ジェネレーターとは何ですか?
ANSWER実行を一時停止・再開できる関数クリックして解説を表示EXPLANATIONジェネレーターは「実行を一時停止・再開できる特殊な関数」です。
function*で定義し、yieldで値を生成します。 - Q79
ジェネレーター関数を定義する正しい書き方はどれですか?
ANSWERfunction* name() { }クリックして解説を表示EXPLANATIONジェネレーター関数は
function*(functionとアスタリスク)で定義します。 - Q80
次のコードを実行すると何が表示されますか?
function* gen() { yield 1; yield 2; yield 3; } const g = gen(); console.log(g.next().value); console.log(g.next().value);ANSWER1, 2クリックして解説を表示EXPLANATIONジェネレーターは
next()を呼ぶたびに次のyieldまで実行します。1回目は1、2回目は2が返されます。
- Q81
イテレーターとは何ですか?
ANSWERnext()メソッドを持ち値を順番に返すオブジェクトクリックして解説を表示EXPLANATIONイテレーターは「
next()メソッドを持ち、{value, done}オブジェクトを返すオブジェクト」です。コレクションを順番に処理できます。 - Q82
Symbol.iteratorは何に使われますか?ANSWERオブジェクトをイテラブルにするクリックして解説を表示EXPLANATIONSymbol.iteratorはオブジェクトをイテラブル(for...ofで使用可能)にするためのメソッドを定義するキーです。 - Q83
Proxyとは何ですか?
ANSWERオブジェクトへの操作を傍受できるラッパークリックして解説を表示EXPLANATIONProxyは「オブジェクトへの操作を傍受してカスタマイズできるラッパー」です。プロパティアクセス、代入、関数呼び出しなどをフックできます。
- Q84
次のコードを実行すると何が表示されますか?
const target = { name: "太郎" }; const proxy = new Proxy(target, { get(obj, prop) { return prop in obj ? obj[prop] : "存在しない"; } }); console.log(proxy.age);ANSWER存在しないクリックして解説を表示EXPLANATIONProxyの
getトラップで、存在しないプロパティにアクセスすると「存在しない」を返すようにしています。 - Q85
Proxyのトラップとは何ですか?
ANSWER操作を傍受して処理するメソッドクリックして解説を表示EXPLANATIONトラップはProxyが傍受できる操作(get、set、deletePropertyなど)を処理するためのメソッドです。
- Q86
Reflectとは何ですか?
ANSWERオブジェクト操作をメソッドとして提供するものクリックして解説を表示EXPLANATIONReflectは「オブジェクトの操作をメソッドとして提供する組み込みオブジェクト」です。Proxyのトラップと対応するメソッドを持ちます。
- Q87
Reflect.get()は何をしますか?ANSWERプロパティを取得するクリックして解説を表示EXPLANATIONReflect.get()はオブジェクトからプロパティを取得します。obj[prop]と同様ですが、関数として呼び出せます。 - Q88
モジュールパターンとは何ですか?
ANSWERクロージャでプライベート状態を隠蔽するパターンクリックして解説を表示EXPLANATIONモジュールパターンは「クロージャを使ってプライベートな状態を隠蔽し、公開APIのみを返す」デザインパターンです。
- Q89
次のコードはどのパターンを実装していますか?
const counter = (function() { let count = 0; return { increment() { count++; }, getCount() { return count; } }; })();ANSWERモジュールパターンクリックして解説を表示EXPLANATION即時関数とクロージャを使って
countを隠蔽し、公開メソッドのみを返すモジュールパターンです。 - Q90
シングルトンパターンとは何ですか?
ANSWERインスタンスが1つだけ存在することを保証するパターンクリックして解説を表示EXPLANATIONシングルトンパターンは「クラスのインスタンスが1つだけ存在することを保証する」デザインパターンです。
- Q91
次のコードはどのパターンを実装していますか?
class Database { static instance = null; static getInstance() { if (!Database.instance) { Database.instance = new Database(); } return Database.instance; } }ANSWERシングルトンパターンクリックして解説を表示EXPLANATIONgetInstance()で常に同じインスタンスを返すシングルトンパターンです。 - Q92
オブザーバーパターンとは何ですか?
ANSWER状態変化を依存オブジェクトに通知するパターンクリックして解説を表示EXPLANATIONオブザーバーパターンは「あるオブジェクトの状態変化を、依存するオブジェクトに自動的に通知する」デザインパターンです。
- Q93
オブザーバーパターンの主な用途は何ですか?
ANSWERイベント処理や状態管理クリックして解説を表示EXPLANATIONオブザーバーパターンはイベント処理、状態管理、MVC/MVVMアーキテクチャなどで広く使われます。
- Q94
ファクトリパターンとは何ですか?
ANSWERオブジェクト作成を専門メソッドに委譲するパターンクリックして解説を表示EXPLANATIONファクトリパターンは「オブジェクトの作成を専門のメソッドに委譲する」デザインパターンです。作成ロジックを隠蔽できます。