2015-12-19 3 views
-1

Мне нужно «разобрать»/создать функцию JS из строки. Допущу:Javascript create function from string

var str = "function(data,type,full,meta){ return'works';}"; 

Я пытался использовать яваскрипт Eval (НТР) функцию, но я всегда получаю эту ошибку из консоли при попытке это

eval(str) 

неперехваченного SyntaxError: Неожиданный маркер (

VM: 2323: 1

Я не вижу ничего неправильного в синтаксисе.

+0

'SyntaxError: инструкция функции требует имя' в консоли. Для этого требуется имя функции. syntax 'function function_name (arg) {}' –

+0

Зачем вам это нужно? –

ответ

4

Это потому, что нет ничего, что заставляет его анализировать как выражение функции, поэтому оно анализируется как объявление функции.

Изначениям функций требуется имя. Из Function Definition,

FunctionDeclaration : 
    function Identifier (FormalParameterListopt) { FunctionBody } 

FunctionExpression : 
    function Identifieropt (FormalParameterListopt) { FunctionBody } 

легко исправить (если вы уверены, что строка имеет правильный синтаксис) будет оборачивать его в скобках. Затем он будет анализироваться как выражение функции.

eval('(' + str + ')')