1

我想将以下代码(忽略 console.log)转换为jsfuck约定,其中只[]()!+允许使用字符(但为了清楚起见,这里也允许使用 aZ 和 0-9 字符的数字和字符串(用双引号括起来) - 因为转换这样的字符串/数字[]()!+很​​容易)

console.log(
    [1,2,3,4,5].map(x=>x**2)
)

部分转换后我有

console.log(
    [1,2,3,4,5]["map"]([]["fill"]["constructor"]("return(2)"))
)

问题是我无法将参数传递x给 map 函数。

问题:如何将函数转换x=>x**2为 jsf 并将其作为map参数传递?

(我不想使用'eval'之类的解决方案,我们将map字符串放入将作为代码执行的字符串,例如[]["fill"]["constructor"]('return [1,2,3,4,5].map(x=>x**2)')()- 这是禁止的)

4

2 回答 2

1

函数构造函数接受多个参数:

 []["fill"]["constructor"]('x', 'return x ** 2;')
于 2020-08-27T14:36:58.367 回答
0

替代解决方案 - 它还允许定义多参数方法

console.log(
  [1,2,3,4,5].map( 
    []["fill"]["constructor"]('return x=>x**2')()
  )
)

于 2020-09-01T18:59:20.373 回答