Home > Software engineering >  How to set a local variable from new function in JavaScript
How to set a local variable from new function in JavaScript

Time:08-28

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();

CodePudding user response:

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)

CodePudding user response:

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"
}
  • Related