1. 2 つの角括弧を追加します [] []
角括弧にはステートメントブロックの機能がないため、ここでの 2 つの角括弧は配列になります。 2 つの配列 (オブジェクト型) を追加するには、まずそれらを値型 (基本型) に変換する必要があります。
1. 値型に変換し、valueOf を呼び出します。[] の valueOf() はそのままです
var arr = [];
arr.valueOf() === arr; // true
2、変換されます。 to string, toString of [] 空の文字列です
[].toString(); / / ""
String([]) // ""
結果が出ました。 2 つの空の文字列を追加しても、結果は空の文字列のままです。つまり、ここでの「 」は数値の加算ではなく文字列の連結を指します。
2. 中括弧と角括弧の追加
{} []
ここでの中括弧はまだオブジェクト リテラルではなく、空のステートメント ブロックであることに注意してください。したがって、これは削除できます。これは
[]
前に登場した 2 つのオペランドが実際には 1 つのオペランドになっていることに注意してください。 " " 演算子は、オペランドが 1 つだけある場合、算術加算という 1 つの意味のみを表します。つまり、ここでは文字列連結の意味はありません。
角括弧内の toString() は空の文字列であり、
""
" " は算術加算演算を表します。文字列は数値ではないため、数値型に変換されます。前の記事で述べたように、空の文字列は数値型の 0 に変換されます。
最終結果は 0 になります。
3. 角括弧と中括弧を追加します
[] {}
上記と比較すると、括弧と括弧の順序が入れ替わるだけです。結果は異なります。中括弧を右側に配置した後は、上で説明した中括弧の意味が異なります。ここの中括弧はステートメント ブロックではなく、オブジェクト リテラルです。
「」の両側のオペランドは、それぞれ値の型「」と「[object Object]」に変換されます。このとき「 」は文字列の連結を意味します。つまり、
"" "[object Object ]"
結果は "[オブジェクト オブジェクト]" です。
4. 括弧も付けてみてください 突然の気まぐれ!さて、括弧には曖昧さがありますが、オペランドとして使用することはできません。