どうして++[][]+[]+[+[]=10

1222 ワード

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