difference between Function and new Function

前端 未结 4 1175
萌比男神i
萌比男神i 2020-12-11 03:37

I sometimes see people doing this Function(\'alert(\"hi\")\') and sometimes they do new Function(\'alert(\"hi\")\')

Is there a difference b

4条回答
  •  眼角桃花
    2020-12-11 04:05

    The spec (page 127) says they're identical.

    15.3.1.1 Function (p1, p2, … , pn, body)

    When the Function function is called with some arguments p1, p2, … , pn, body (where n might be 0, that is, there are no “p” arguments, and where body might also not be provided), the following steps are taken:

    1. Create and return a new Function object as if the standard built-in constructor Function was used in a new expression with the same arguments (15.3.2.1).

    However, you should avoid the Function constructor at all costs.
    It needs to eval the string you pass to it; eval is evil, and slow too.

提交回复
热议问题