角括弧を使用した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 /セキュリティ上の入札

Source: https://habr.com/ru/post/J279507/


All Articles