global.eval не может посещать переменные в лексической области видимости. Соответствует ли поведение стандарту ECMAScript?

У меня есть файл JavaScript,e.js

var global = Function('return this')();

var i = 1;

console.log(eval("100-1"));
console.log(eval("i"));

console.log(global.eval("100-1"));
console.log(global.eval("i"));

Когда я выполню это V8:

$ node e.js
99
1
99

undefined:1
i
^
ReferenceError: i is not defined
    at eval (eval at <anonymous> (/private/tmp/xxxx/e.js:8:20), <anonymous>:1:1)
    at eval (native)
    at Object.<anonymous> (/private/tmp/xxxx/e.js:8:20)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

В следствии,global.eval работает для математического оператора, но не может посетить переменнуюi, в то время какeval работает в обоих случаях.

Является ли это поведение ограничением V8? Или это ожидаемое поведение в соответствии со стандартом ECMAScript?

Ответы на вопрос(1)

Ваш ответ на вопрос