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