4

I have this bit of code. What I want it to do is is load a .js file and then run it. wWen it runs I want it to return a parameter or even better an object.

This is the code in my page

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

And this is the is.js

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

But when I run it i get "Uncaught SyntaxError: Illegal return statement" in the console.

4 Answers 4

5

Another solution I found is to encapsulate your string to be eval'd inside a function, which is quite simple.

return eval("(function() {" + xhr.responseText + "})();");
Sign up to request clarification or add additional context in comments.

Comments

2

You cannot use return outside of a function. But to return a value from eval you can use the following syntax-

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

3 Comments

Couldn't you just use IO; as the final statement? Braces aren't that necessary.
yeah, using just IO works too. I was trying to write it as an object to make eval return it
That {IO} at the end is what did. Good answer.
0

Problem is, you can't return outside of a function. What you'll need to is to return IO; from your runCode function after the request completes.

Comments

0

Remove the new statement

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.