角括弧を使用した1つの式の楽しい解析

JavaScriptでの理由:



>1+[[]+[]]-[]+[[]-[]]-1 9
      
      





一般に、これがなぜそうなのかを理解することは一見困難です。



[[]+[]]-[]+[[]-[]]==9



思いますか?



そして、ここにはありません:



 > [[]+[]]-[]+[[]-[]] "00"
      
      





しかし、JSの行に追加すると連結が発生するため、最初の式は99になります。



 > 1+"00"-1 99
      
      





どうして?



最初から2つのゼロについて分解する必要があります。



 > []+[] ""
      
      





ここでは、空の配列が空の行になり、折りたたまれたときに空の行が生成されたことは明らかです。



 > [""]-[] 0
      
      





また、算術的に2番目の空の配列がゼロであり、空の文字列(最初の配列は算術のために縮小される)もゼロであることがわかります。 ゼロマイナスゼロ、それは理にかなっています。 2番目の部分もすぐに明らかになります。



 > [[]-[]] [0]
      
      





したがって、通常のゼロと配列内のゼロがあり、それらを追加すると、行に縮小されて連結されます。



 > 0+[0] "00"
      
      





ダブルゼロでは、すべてが明確です。 9はどこから来たのですか?



予想どおり、左から右に追加を読み取ります。



 > 1+[[]+[]] "1"
      
      





すでに多くの角かっこがわかっています。空の文字列を持つ配列は空の文字列に縮小され、ユニット全体がユニット文字列になりました...



 > "1"-[] 1
      
      





...そしてゼロを引くと、整数に戻ります。



 > 1+[[]-[]] "10"
      
      





右側の角括弧のセットは["0"]で、これは配列の文字列表現になり、ユニットに追加されます。ユニットは再びこのための文字列になります。

そして最後の和音は非常に明白です:



 > "10"-1 9
      
      





そして、結局のところ、すべてが正しいようです...



一般に、人々は、ブラケット、感嘆符、プラスのみを使用してJavascriptインタープリターで完全な言語を作成し、それを使用してeBayの正規表現フィルタリングをバイパスします: http : //thedailywtf.com/articles /セキュリティ上の入札




All Articles