どうして++[][]+[]+[+[]=10
1222 ワード
まず、この問題を聞いた人は天才です.彼はどうしてこのような問題に出会いますか?その次に、この問題に答える人は更に天才で、彼がこの問題に答えるとは想像できません.さらに想像しにくいのは、彼の答えはこのような詳細かつ充実していて、本当に飽きないと言えます.
この問題にあった以上、私たちも一緒に改善してもいいです.
これはJavascript言語の問題です.完全に有効な等式です.自分を信じないなら試してみてもいいです.次は高人の題解を見てみます.
したがって、簡単に(++は+より高い優先度)できます.[][0]は内部配列に戻ります.言語規範によって[][0]=======[]は正しくないと言いますが、この内部配列をAと呼びます.誤記を避けるための書き方です. +[]==A+1は+の意味で「プラス」です. ++[]====+(A+1);つまり、あなたが得たのは常に数値です.
同様に、私達はこの一連のコードをより明確に簡略化することができます.Aを[]に交換します. +('+1)====+(""+1)で +("+1)====+("1")で +("1")==1 もう一度簡略化しましょう.
したがって、最終的には(数字+文字列=文字列)を取得します.
この問題にあった以上、私たちも一緒に改善してもいいです.
これはJavascript言語の問題です.完全に有効な等式です.自分を信じないなら試してみてもいいです.次は高人の題解を見てみます.
++[[]][+[]]+[+[]]
この表現を分割すると、これは同じです.++[[]][+[]]
+
[+[]]
JavaScriptでは、+[]==0は完全に正しいです.いくつかの文字を数字に変換します.ここでは、この式は+になります.したがって、簡単に(++は+より高い優先度)できます.
++[[]][0]
+
[0]
[][0]とは、[]の最初の要素を取得するという意味ですので、以下のような結果が得られます.同様に、私達はこの一連のコードをより明確に簡略化することができます.Aを[]に交換します.
+([] + 1)
+
[0]
JavaScriptでは、これも正しいです.[]+1====="1",[]=="(これは空の配列の内部要素接続に相当します.)1
+
[0]
同様に、Javascriptでは、これは正しい:[0]===“0”という要素がある配列に相当する内部要素の接続です.各要素は使用され、分離されます.要素が一つだけある場合、このプロセスの結果はその自身の最初の要素です.したがって、最終的には(数字+文字列=文字列)を取得します.
1
+
"0"
=== "10" // !
もっと詳しい情報が知りたいなら、ここを訪問してください.