Как вернуть eval (код) и вернуть объект обратно с помощью JavaScript? - PullRequest
3 голосов
/ 09 октября 2010

У меня есть этот бит кода.Я хочу, чтобы он загрузил файл .js и запустил его.Когда он запускается, я хочу, чтобы он возвращал параметр или, что еще лучше, объект.

Это код на моей странице

var runCode = function(){
    var xhr=new XMLHttpRequest();
    xhr.open('GET','io.js',false);
    xhr.send();
    return eval(xhr.responseText);
};

И это is.js

var IO = new function(){
    this.run = true;
    return 'io';
};
return IO

Но когда я запускаю его, я получаю «Uncaught SyntaxError: Недопустимый оператор возврата» в консоли.

Ответы [ 4 ]

4 голосов
/ 23 сентября 2013

Другое решение, которое я нашел, заключается в том, чтобы заключить вашу строку в eval внутри функции, что довольно просто.

return eval("(function() {" + xhr.responseText + "})();");
2 голосов
/ 09 октября 2010

Вы не можете использовать return вне функции. Но чтобы вернуть значение из eval, вы можете использовать следующий синтаксис-

eval('var IO = function(){this.run = true; return "io";};{IO};')
0 голосов
/ 09 октября 2010

Удалить оператор new

var IO = function(){ 
    this.run = true; 
    return 'io'; 
}; 
return IO 
0 голосов
/ 09 октября 2010

Проблема в том, что вы не можете вернуться за пределы функции. Вам нужно будет return IO; от вашей функции runCode после завершения запроса.

...