BonsaiDen/JavaScript-Garden

Wrong output value written in Why Not to Use eval Section

divyanshu-rawat opened this issue · 4 comments

In Why Not to Use eval Section

It is already mentioned that eval only executes in the local scope when it is being called directly and when the name of the called function is actually eval.

So, Here we are not calling it directly so it will not change the value of Global variable number.
Hence Global variable number will remain same i.e - 1

var number = 1;
function test() {
    var number = 2;
    var copyOfEval = eval;
    copyOfEval('number = 3');
    return number;
}
test(); // 2
number; // 3     (Here value of number will be 1 instead of 3)

Please Assign me this issue I want to contribute .

I've just tested this in node v6.4.0 and number ends up as 3, as expected. What version of JS/node are you using?

I am using node v7.3.0

Actually if I run this from a file, I get the same result.
However running this in the node terminal or in Chrome produces the original result.

Javascript Garden doesn't technically cover node - and this seems to be a node feature.