super return

Sebastian Malton sebastian at malton.name
Mon Aug 28 20:27:57 UTC 2017


This could be done but I see a few problems with it:

1. Though it does make ending from some functions like forEach able to be done it does not all returning from other functions like map or sort
2. It does not directly allow the returning of values but this might be rectified by having it be a function that you call and when it calls it stops any further calls and then returns the first parameter past


  Original Message  
From: jackalmage at gmail.com
Sent: August 28, 2017 4:17 PM
To: sebastian at malton.name
Cc: es-discuss at mozilla.org
Subject: Re: super return

On Mon, Aug 28, 2017 at 12:29 PM, Sebastian Malton
<sebastian at malton.name> wrote:
> I have seen some people want to modify some of the array prototype
> functions, especially forEach, so that returning from them returns a value.
> However, I have also seems that this could break things since in some cases,
> again forEach, the return value in explicitly defined.
>
> Thus I propose the new syntax `super return` and any other positive number
> of supers. This syntax is currently not valid in any scenario and with the
> current meaning of super seems, to me at least, relativity easy to
> understand.
>
> The outcome of this basically means "return from current context up one
> level and then return from there".
>
> A current method of doing this is by using try / catch but it is not ideal.
> Using the above method I believe that it would be able to be better
> optimized.

This has been suggested in the past, by adding a fourth argument to
the callback signature passing an opaque "halt" value. Returning the
halt value would end execution of the looping function prematurely.
No reason to add new syntax for this, plus hooks for userland to take
advantage of it, when we can just use something that userland could
adopt *today*.

(As an added bonus, it would make the callback arguments be Element,
Index, Collection, Halt, finally spelling out Brendan's full last
name. ^_^)

~TJ


More information about the es-discuss mailing list