#eval takes a string and treats its contents as if it were originally written code.
function foo(str){
"use strict";
eval(str);
console.log(a);//3
}
foo("var a = 3;");
But in strict mode, eval adds a scope by itself. The result is as follows:
function foo(str){
"use strict";
eval(str);
console.log(a);//Uncaught ReferenceError: a is not defined
}
foo("var a = 3;");
#XXXXXXXXXXXXXXXXXXX。
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXX
XXXXXXXXXX
XXXXXXXXX
XXXXXXXXX