Allen Wirfs-Brock (2014-02-20T16:16:45.000Z)
On Feb 20, 2014, at 7:49 AM, Boris Zbarsky wrote:

> Consider http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.splice step 10.  It uses the phrasing "if deleteCount is not present" but I can't find anything in the specification defining the concept of "present" or "not present".  So it's hard for me to tell what behavior this is actually defining.
> 
> Is this supposed to be a typeof(deleteCount) == "undefined" test, an argc test, or something else?
> 
> I'm assuming it's supposed to be the typeof() == "undefined" test, but this should actually be specified somewhere.  Perhaps as a definition in section 4.3?

Nope, it means that the length of the argument list is less than two, hence an argument corresponding to 'deleteCount' was not passed.

http://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-standard-built-in-objects (para 4) says: "Unless otherwise specified in the description of a particular function, if a built-in function or constructor is given fewer arguments than the function is specified to require, the function or constructor shall behave exactly as if it had been given sufficient additional arguments, each such argument being the undefined value."

So, "is not present" is how handling of missing arguments is "otherwise specified".

If the algorithm need to simply test for an explicitly or implicitly passed undefined, it would simply say "If argument is undefined, then ..."

I always thought "not present" was sufficiently descriptive, in combination with the missing args default to undefined rule, that it didn't need further definition.

Allen







> 
> -Boris
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20140220/78ad82d5/attachment.html>
domenic at domenicdenicola.com (2014-02-24T21:34:48.139Z)
Nope, it means that the length of the argument list is less than two, hence an argument corresponding to 'deleteCount' was not passed.

http://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-standard-built-in-objects (para 4) says: "Unless otherwise specified in the description of a particular function, if a built-in function or constructor is given fewer arguments than the function is specified to require, the function or constructor shall behave exactly as if it had been given sufficient additional arguments, each such argument being the undefined value."

So, "is not present" is how handling of missing arguments is "otherwise specified".

If the algorithm need to simply test for an explicitly or implicitly passed undefined, it would simply say "If argument is undefined, then ..."

I always thought "not present" was sufficiently descriptive, in combination with the missing args default to undefined rule, that it didn't need further definition.