On Jan 18, 2009, at 12:47 PM, Mark S. Miller wrote:
The Mountain View draft says:
15.1.2 Function Properties of the Global Object
15.1.2.1 eval (x)
When the eval function is called with one argument x, the following
steps are taken:
[...]
If the value of the eval property is used in any way other than a
direct call (that is, other than by the explicit use of its name as
an Identifier which is the MemberExpression in a CallExpression), or
if the eval property is assigned to, an EvalError exception may be
thrown.
15.1.2.1.1 Strict Mode Restrictions
If strict mode code uses the value of the eval property any way
other than as a direct call (that is, other than by the explicit use
of its name as an Identifier which is the MemberExpression in a
CallExpression), or if the eval property is assigned to, an
EvalError exception is thrown.
I believe this spec is too severe, both for nonstrict and strict
code. My sense of the committee consensus is that an indirect eval
call should be unconditionally allowed, in which case the execution
context should be the global execution context, as already
adequately specified in 10.4.2. (In the committee's conversations,
we've referred to the "direct calls" of the spec language as the
"eval operator", and the spec's "indirect calls" as the "eval
function". I'm happy with either terminology.)
Certainly, actually raising exceptions in the cases cited is not
compatible with the Web, and is not much easier than treating indirect
calls (or apparently direct calls that end up being just normal calls)
as calls. That's what ES4 required and WebKit at least implements this
behavior.
Regards,
Maciej
_______________________________________________
Es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss