Seita Moriyama
banner
s8a.jp
Seita Moriyama
@s8a.jp
Web系ITエンジニア。2児の父。
ちなみに、[,,] はカンマが2つあるのに、なぜ [empty, empty, empty] ではなく [empty, empty] を表すのかというと、JavaScriptには末尾のカンマを無視する仕様があるためです。
その仕様のおかげで、以下のように各行にカンマをつける記述が可能になっています。

[
generateSomethingFunction(),
generateSomethingFunction(),
generateSomethingFunction(),
]
January 19, 2025 at 10:00 AM
答えは、","(文字列)です!

加算演算子(+)は評価するとき、まず両方のオペランドをプリミティブ値に変換します。
中身のある配列をプリミティブ値に変換すると、中身をプリミティブ値に変換し、それをカンマ区切りにした文字列になります。
[,,] は [empty, empty] を表すため、文字列に変換されると "" + "," + "" で "," となります。
[] は文字列に変換されると、"" となります。

結果、"," + "" となり、"," が答えになります。
January 19, 2025 at 10:00 AM
答えは、undefined(TypeScriptの型定義上では void )です!

一見、{}(空のオブジェクト)を返しているように見えますが、今回の例では {} はブロック文を表しています。
ブロック文の中で何も return していないので、undefined が答えになります。

空のオブジェクトを返したい場合は、オブジェクトを括弧で囲み、以下のように記述すると良いです。
() => ({})
January 18, 2025 at 10:00 AM
答えは、""(空文字列)です!

[](空の配列)は、プリミティブ値に変換すると ""(空文字列)になります。
"" + "" となるため、結果は "" となります。

JavaScriptの加算演算子(+)は、数値だけでなく文字列も受け付けるため、""(空文字列)は数値には変換されず、そのまま計算されます。
January 17, 2025 at 10:00 AM
答えは、NaN(Not-A-Number)です!

それぞれ、プリミティブ値に変換の後、数値に変換されて計算が行われます。
[](空の配列)は、プリミティブ化で ""(空文字列)、それが 0(数値)に変換されます。
JavaScriptでは 0 / 0 は NaN(Not-A-Number)になりますので、答えは NaN となります。
ちなみに、分子が 0 でない場合( 1 / 0 など)は、Infinity(無限大を表す数値)になります。
January 16, 2025 at 10:00 AM
答えは、undefined です!

[](空の配列)はプリミティブ値に変換すると ""(空文字列)になるため、[][[]] は [][""] と同じになります。
これは、[](空の配列)の "" プロパティにアクセスしていることになり、配列は "" プロパティを持たないため、undefined となります。
January 15, 2025 at 10:00 AM
答えは、2 です!

try ブロックと finally ブロックの両方に return が存在する場合、try ブロック内の return は実行されず、finally ブロック内の return のみ有効になります。

ただし一般に、finally ブロック内に return を置くのは推奨されていません。
January 14, 2025 at 10:00 AM
答えは、"false"(文字列)です!

[](空の配列)はtruthyなので、![] は false になります。
また、右の [] はプリミティブ値に変換されるため、""(空文字列)に変換されます。
そして、 false + "" となり、falseが文字列に変換されて "" と連結され、結果は "false" となります。
January 13, 2025 at 10:00 AM
答えは、"0"や" "(空白文字列)、[] や [0]などです!

一見、何かの値とその論理否定を比較すると、常にfalseになりそうですが、ポイントは緩い等価(==)が使われているという点です。

まず、左辺はプリミティブ値に変換され、右辺は論理否定なので真偽値(boolean)になります。
その後、両辺とも数値(number)に変換され、比較されます。

よって、プリミティブ化と数値化で0に変換にされ、かつtruthyなものが正解になります。
(1に変換され、かつfalsyなものは存在しません。)
January 12, 2025 at 10:00 AM
vanilla-ts テンプレートでプロジェクトを生成すると良いです。

$ npm create vite@latest

ja.vitejs.dev/guide/
February 9, 2024 at 11:51 AM