その仕様のおかげで、以下のように各行にカンマをつける記述が可能になっています。
[
generateSomethingFunction(),
generateSomethingFunction(),
generateSomethingFunction(),
]
その仕様のおかげで、以下のように各行にカンマをつける記述が可能になっています。
[
generateSomethingFunction(),
generateSomethingFunction(),
generateSomethingFunction(),
]
加算演算子(+)は評価するとき、まず両方のオペランドをプリミティブ値に変換します。
中身のある配列をプリミティブ値に変換すると、中身をプリミティブ値に変換し、それをカンマ区切りにした文字列になります。
[,,] は [empty, empty] を表すため、文字列に変換されると "" + "," + "" で "," となります。
[] は文字列に変換されると、"" となります。
結果、"," + "" となり、"," が答えになります。
加算演算子(+)は評価するとき、まず両方のオペランドをプリミティブ値に変換します。
中身のある配列をプリミティブ値に変換すると、中身をプリミティブ値に変換し、それをカンマ区切りにした文字列になります。
[,,] は [empty, empty] を表すため、文字列に変換されると "" + "," + "" で "," となります。
[] は文字列に変換されると、"" となります。
結果、"," + "" となり、"," が答えになります。
一見、{}(空のオブジェクト)を返しているように見えますが、今回の例では {} はブロック文を表しています。
ブロック文の中で何も return していないので、undefined が答えになります。
空のオブジェクトを返したい場合は、オブジェクトを括弧で囲み、以下のように記述すると良いです。
() => ({})
一見、{}(空のオブジェクト)を返しているように見えますが、今回の例では {} はブロック文を表しています。
ブロック文の中で何も return していないので、undefined が答えになります。
空のオブジェクトを返したい場合は、オブジェクトを括弧で囲み、以下のように記述すると良いです。
() => ({})
[](空の配列)は、プリミティブ値に変換すると ""(空文字列)になります。
"" + "" となるため、結果は "" となります。
JavaScriptの加算演算子(+)は、数値だけでなく文字列も受け付けるため、""(空文字列)は数値には変換されず、そのまま計算されます。
[](空の配列)は、プリミティブ値に変換すると ""(空文字列)になります。
"" + "" となるため、結果は "" となります。
JavaScriptの加算演算子(+)は、数値だけでなく文字列も受け付けるため、""(空文字列)は数値には変換されず、そのまま計算されます。
それぞれ、プリミティブ値に変換の後、数値に変換されて計算が行われます。
[](空の配列)は、プリミティブ化で ""(空文字列)、それが 0(数値)に変換されます。
JavaScriptでは 0 / 0 は NaN(Not-A-Number)になりますので、答えは NaN となります。
ちなみに、分子が 0 でない場合( 1 / 0 など)は、Infinity(無限大を表す数値)になります。
それぞれ、プリミティブ値に変換の後、数値に変換されて計算が行われます。
[](空の配列)は、プリミティブ化で ""(空文字列)、それが 0(数値)に変換されます。
JavaScriptでは 0 / 0 は NaN(Not-A-Number)になりますので、答えは NaN となります。
ちなみに、分子が 0 でない場合( 1 / 0 など)は、Infinity(無限大を表す数値)になります。
[](空の配列)はプリミティブ値に変換すると ""(空文字列)になるため、[][[]] は [][""] と同じになります。
これは、[](空の配列)の "" プロパティにアクセスしていることになり、配列は "" プロパティを持たないため、undefined となります。
[](空の配列)はプリミティブ値に変換すると ""(空文字列)になるため、[][[]] は [][""] と同じになります。
これは、[](空の配列)の "" プロパティにアクセスしていることになり、配列は "" プロパティを持たないため、undefined となります。
try ブロックと finally ブロックの両方に return が存在する場合、try ブロック内の return は実行されず、finally ブロック内の return のみ有効になります。
ただし一般に、finally ブロック内に return を置くのは推奨されていません。
try ブロックと finally ブロックの両方に return が存在する場合、try ブロック内の return は実行されず、finally ブロック内の return のみ有効になります。
ただし一般に、finally ブロック内に return を置くのは推奨されていません。
[](空の配列)はtruthyなので、![] は false になります。
また、右の [] はプリミティブ値に変換されるため、""(空文字列)に変換されます。
そして、 false + "" となり、falseが文字列に変換されて "" と連結され、結果は "false" となります。
[](空の配列)はtruthyなので、![] は false になります。
また、右の [] はプリミティブ値に変換されるため、""(空文字列)に変換されます。
そして、 false + "" となり、falseが文字列に変換されて "" と連結され、結果は "false" となります。
一見、何かの値とその論理否定を比較すると、常にfalseになりそうですが、ポイントは緩い等価(==)が使われているという点です。
まず、左辺はプリミティブ値に変換され、右辺は論理否定なので真偽値(boolean)になります。
その後、両辺とも数値(number)に変換され、比較されます。
よって、プリミティブ化と数値化で0に変換にされ、かつtruthyなものが正解になります。
(1に変換され、かつfalsyなものは存在しません。)
一見、何かの値とその論理否定を比較すると、常にfalseになりそうですが、ポイントは緩い等価(==)が使われているという点です。
まず、左辺はプリミティブ値に変換され、右辺は論理否定なので真偽値(boolean)になります。
その後、両辺とも数値(number)に変換され、比較されます。
よって、プリミティブ化と数値化で0に変換にされ、かつtruthyなものが正解になります。
(1に変換され、かつfalsyなものは存在しません。)