📜 ⬆️ ⬇️

Perl write-only vs. JS write-only

This little JavaScript by Yosuke Hasegawa performs alert (1):
(Q = [M = [], µ =! M + M] [µ [È = - ~ - ~ ++ M]] ({} + M) [Ç = !! M + µ, ª = Ç [M ] + Ç [+! Å], Å] + ª]) () [μ [Å] + μ [Å + Å] + Ç [È] + ª] (Å)

How it works?


For simplicity, replace
Å -> Int_1
É -> f_sort
È -> Int_3
µ -> B_false
ª -> Str_rt
Ç -> Str_truefalse
')
We get:
(f_sort = [Int_1 = [], B_false =! Int_1 + Int_1] [B_false [Int_3 = - ~ - ~ ++ Int_1] + ({} + Int_1) [Str_truefalse = !! Int_1 + B_false, Str_rt = Str_truefalse [Int_1 ] + Str_truefalse [+! Int_1], Int_1] + Str_rt]) () [B_false [Int_1] + B_false [Int_1 + Int_1] + Str_truefalse [Int_3] + Str_rt] (Int_1)

Formatting:
  1. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  2. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  3. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  4. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  5. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  6. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  7. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  8. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  9. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  10. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  11. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  12. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  13. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  14. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  15. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  16. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  17. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  18. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  19. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  20. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  21. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  22. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  23. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  24. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)
  25. ( f_sort = [ Int_1 = [ ] , B_false = ! Int_1 + Int_1 // B_false = ![]+[] = false ] // [[],false] [ B_false [ Int_3 = - ~ - ~ ++ Int_1 // ++Int_3 = 3 ([].toInt() -> 0, ++0 = 1, ~1 -> -2, --2 -> 2, ~2->-3, --3 = 3), Int_1 = 1 ] // 'false'[3] = 's' + ( { } + Int_1 ) // {} cast to string -> '[object Object]' + 1 -> '[object Object]1' [ Str_truefalse = !! Int_1 + B_false , // !!Int_1 -> true, Str_truefalse = true + false = 'truefalse' Str_rt = Str_truefalse [ Int_1 ] + Str_truefalse [ +! Int_1 ] , // Str_rt = 'truefalse'[1] + 'truefalse'[0] = 'rt' Int_1 // 1 ] //'[object Object]1'['truefalse', 'rt',1] -> 'o' ('[object Object]1'[1]) + Str_rt ] // [][ 's'+'o'+'rt'] -> [].sort ) ( ) // (f_sort = [].sort)() -> [].sort.call() -> window [ B_false [ Int_1 ] + // 'false'[1] -> 'a' B_false [ Int_1 + Int_1 ] + // 'false'[2] -> 'l' Str_truefalse [ Int_3 ] + // 'truefalse'[3] -> 'e' Str_rt // 'rt' ] // ['alert'] ( Int_1 ) // window['alert'](1)


Everything is simple and clear.

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


All Articles