Question about joined function object of ECMA-262 3rd edition

Shijun He hax.sfo at gmail.com
Fri Jul 27 02:56:31 PDT 2007


On 7/27/07, liorean <liorean at gmail.com> wrote:
> x()===y() may return false the same way x()===x() may return false.
> Functions in JavaScript may have side effects, and the same input
> doesn't necessarily give the same output in cosecutive uses of the
> function.

No, I don't mean side effect, and there is no side effect in this
case. The result may be not equal just because they have diff
[[Scope]].

>
> Functions with different scope may be joined, but only if the scope
> difference will lead to no externally observable difference.

Could you point out in where the spec defines such condition?

The spec only says: ...an implementation may detect when the
differences in the [[Scope]] properties of two or more joined Function
objects are not externally observable and in those cases reuse the
same Function object rather than making a set of joined Function
objects.

My impression of it is: if the differences in the [[Scope]] are
externally observable, then the implementation can't reuse the same
object, but can make a set of joined Function objects.



More information about the Es4-discuss mailing list