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