On May 3, 2013, at 5:33 AM, raul mihaila wrote:

> Hi,
> 
> In section 15.3.4.3 Function.prototype.apply (thisArg, argArray) (page 119 of 
> Ecma-262, Edition 5.1) there's this note: 
> 'The thisArg value is passed without modification as the this value. This is 
> a change from Edition 3, where a undefined or null thisArg is replaced with 
> the global object and ToObject is applied to all other values and that result 
> is passed as the this value.' From this I understand that this is happening 
> in both non-strict mode and strict mode. 

This is describing the internal behavior of the apply function.  Note that 
built-ins like apply are neither strict or non-strict as they aren't specified 
via ECMAScript code.  They always operate the same regardless of which mode 
code called them.

> 
> But in Annex C, one of the bullets says (page 235): 
> 'If this is evaluated within strict mode code, then the this value is not 
> coerced to an object. A this value of null or undefined is not converted to 
> the global object and primitive values are not converted to wrapper objects. 
> The this value passed via a function call (including calls made using 
> Function.prototype.apply and Function.prototype.call) do not coerce the 
> passed this value to an object (10.4.3, 11.1.1, 15.3.4.3, 15.3.4.4).' From 
> this I understand that the coercion occurs only in non-strict mode (like in 
> Firefox).

Annex C is specifically about strict mode.  Annex E gives a more general 
description that applies to both modes.
> 
> Is it possible to make this clearer in the next edition, please?

Feel free to file a bug with suggested changes at bugs.ecmascript.org

Allen



_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to