1

I have a function with a variable. I need to run code from a string to modify that variable. How would I set a local variable from new Function() or something similar?

function alertNumber() {
  var number = 5;
  var f = new Function("number = 4");
  f();
  console.log("local " + number); //should alert 4
  console.log("window " + window.number); //instead of the local variable, it sets the property to the window
}
alertNumber();

2 Answers 2

3

With new Function, it's not possible.

However, unlike eval (which may have access to the local scope), the Function constructor creates functions which execute in the global scope only.

You would need

function alertNumber() {
  var number = 5;
  eval("number = 4");
  console.log("local " + number); //should alert 4
}
alertNumber();

(though having to do this in the first place is quite suspicious - if it were me, I'd consider hard if there were really no alternatives first)

Sign up to request clarification or add additional context in comments.

Comments

1

Just create a new function that modifies the number and then returns the result of the modified number:

// This should fix your problem

function modifyNumber(number) {
  return number = 4
}

function alertNumber() {
  var number = 5
  number = modifyNumber(number)
  console.log("local " + number) // outputs "local 4"
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.