代码之家  ›  专栏  ›  技术社区  ›  Kamil Kiełczewski

将带有一个参数的函数传递给数组。使用jsfuck映射

  •  0
  • Kamil Kiełczewski  · 技术社区  · 5 年前

    我想将以下代码(ignore console.log)转换为 jsfuck 只有字符的约定 []()!+ 是允许的(但为了清楚起见,这里也允许数字和带有a-Z和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 进入地图功能。

    问题 :如何转换函数 x=>x**2 发送到jsf并将其作为 map 论点

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

    1 回复  |  直到 5 年前
        1
  •  1
  •   Jonas Wilms    5 年前

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

     []["fill"]["constructor"]('x', 'return x ** 2;')
    
        2
  •  0
  •   Kamil Kiełczewski    5 年前

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

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