Lol...not necessary in strict mode (which I thankfully work almost
purely in by default) ;)

But I myself occasionally depend on that behavior as well, that of
`forEach` returning undefined. I've found that it's not that hard to
band-aid `.map` when I need to actually reuse the value (which isn't
the usual case). I also use the same function for Promises, which I
need it more frequently for.

```js
function pipe(f) {
  return function (x) {
    f.apply(this, arguments)
    return x
  }
}

// Example
const numberRead = books
  .map(title => new Book(title))
  .map(pipe(book => console.log(`Book info: ${JSON.stringify(book)}`)))
  .filter(book => book.read)
  .length

// With my `.tap` idea
const numberRead = books
  .map(title => new Book(title))
  .tap(book => console.log(`Book info: ${JSON.stringify(book)}`))
  .filter(book => book.read)
  .length
```

On Fri, Oct 16, 2015 at 5:36 PM, Alexander Jones <a...@weej.com> wrote:
> You mean to say you *don't* have
>
> ```js
> var undefined = [].forEach(Array.prototype.forEach.call);
> ```
>
> at the top of every file!?
>
>
> On Friday, 16 October 2015, Niloy Mondal <niloy.monda...@gmail.com> wrote:
>>
>> > That'd be a compatibility break.
>>
>> Ugh... you mean people actually depend on `forEach` returning `undefined`
>> (which it always does) to do further task?
>>
>> I wonder what that kinda code would look like >.<
>>
>> On Fri, Oct 16, 2015 at 6:08 PM, Frankie Bagnardi <f.bagna...@gmail.com>
>> wrote:
>>>
>>> That'd be a compatibility break.
>>>
>>> If we end up getting :: though:
>>>
>>> ```js
>>> function logEach(){
>>>   this.forEach((x) => console.log(x));
>>>   return this;
>>> }
>>>
>>>
>>> const a = [1, 2, 3]
>>>   .map(square)
>>>   ::logEach()
>>>   .map(plus1)
>>>   .reduce(add);
>>> ```
>>>
>>> You could make that a global variable so you can sprinkle it around your
>>> code in development.
>>>
>>> Having some developer tools in the language would be nice though. I don't
>>> even think console.log is in the spec. A global like Debug.logThis for
>>> example would be a more general ::-able.
>>>
>>>
>>> On Fri, Oct 16, 2015 at 5:32 AM, Andrea Giammarchi
>>> <andrea.giammar...@gmail.com> wrote:
>>>>
>>>> ```js
>>>> const a = [1, 2, 3]
>>>>   .map(square)
>>>>   .map(x => console.log(x) || x )
>>>>   .map(plus1)
>>>>   .reduce(add);
>>>> ```
>>>>
>>>> Regards
>>>>
>>>>
>>>> On Fri, Oct 16, 2015 at 10:13 AM, Niloy Mondal
>>>> <niloy.monda...@gmail.com> wrote:
>>>>>
>>>>> Currently, `Array.prototype.forEach` returns `undefined`. It would be
>>>>> more
>>>>> useful if it returns the array itself.
>>>>>
>>>>> Say I have written some code like this...
>>>>>
>>>>> ```js
>>>>> const a = [1, 2, 3]
>>>>>   .map(square)
>>>>>   .map(plus1)
>>>>>   .reduce(add);
>>>>> ```
>>>>>
>>>>> For some reason, I am not getting the expected output. For debugging, I
>>>>> would
>>>>> like the print the values after each step. My first initial reaction is
>>>>> to
>>>>> put a `forEach` step in between and print the values like so...
>>>>>
>>>>> ```js
>>>>> const a = [1, 2, 3]
>>>>>   .map(square)
>>>>>   .forEach(x => console.log(x))
>>>>>   .map(plus1)
>>>>>   .reduce(add);
>>>>> ```
>>>>>
>>>>> Unfortunately, this does not work as `forEach` returns `undefined`. I
>>>>> now have
>>>>> to comment out all the code below it. Having the _plug and play_
>>>>> behaviour for
>>>>> `forEach` would be very convenient.
>>>>>
>>>>> _______________________________________________
>>>>> es-discuss mailing list
>>>>> es-discuss@mozilla.org
>>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> es-discuss mailing list
>>>> es-discuss@mozilla.org
>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>
>>>
>>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>



-- 
Isiah Meadows
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to