クイズ: モダンJavaScriptは知ってる?
JavaScript の腕前を証明しよう!
ES2015 と ES2022、どっちが分かりますか?
- JavaScript スキルを証明しよう! 🚀
- ログインやサインアップは不要です。 ✨
- 選択式クイズです。 🤖 … どれだけ簡単だと思いますか?
次のコードの出力は何ですか?
const obj = { foo: null };const result = obj.foo?.bar;console.log(result);オプショナルチェイニング演算子(?.)は、左側が null または undefined の場合に評価を停止します。obj.foo が null なので、obj.foo?.bar は undefined となります。
演算子の正確な意味に注目してください。古い構文から予想される動作と、この機能の実際の動作は同じとは限りません。
次のコードの結果は何ですか?
const promises = [ Promise.resolve('success'), Promise.reject('error')];Promise.allSettled(promises).then(results => { console.log(results[0].status + ': ' + results[0].value);});Promise.allSettled は各 Promise の結果を記述したオブジェクトの配列を返します。最初の Promise は fulfilled で値 'success' を持つので、ログは fulfilled: success と出力します。
演算子の正確な意味に注目してください。古い構文から予想される動作と、この機能の実際の動作は同じとは限りません。
str.matchAll() は何を返しますか?
const str = 'foo1bar2baz3';const matches = str.matchAll(/\d/g);String.matchAll は配列ではなくマッチのイテレータを返します。このイテレータを使って文字列からすべてのマッチンググループを取得できます。
演算子の正確な意味に注目してください。古い構文から予想される動作と、この機能の実際の動作は同じとは限りません。
import.meta.url は何を表しますか?
console.log(import.meta.url);import.meta は現在のモジュールに関するメタデータを含むオブジェクトです。import.meta.url プロパティは現在のモジュールの URL を表し、スクリプトが実行されている場所の情報を取得するのに使えます。
演算子の正確な意味に注目してください。古い構文から予想される動作と、この機能の実際の動作は同じとは限りません。
nullish 代入の後、b の値は何ですか?
let b = null;b ??= 10;console.log(b);nullish 合体代入 (??=) は左側の値が null または undefined の場合に右側の値を代入します。b は null なので、値 10 が代入されます。
演算子の正確な意味に注目してください。古い構文から予想される動作と、この機能の実際の動作は同じとは限りません。
WeakRef は何を提供しますか?
const obj = { data: 'important' };const ref = new WeakRef(obj);console.log(ref.deref());WeakRef はオブジェクトへの弱参照を提供し、他に参照が無ければガベージコレクションの対象になります。ここでは obj がまだ強く参照されているので、deref() は元のオブジェクトを返します。対象が回収されていれば、deref() は undefined を返します。
演算子の正確な意味に注目してください。古い構文から予想される動作と、この機能の実際の動作は同じとは限りません。
