Let's say I had the following code:
let array = [1, 2, 3]
array.forEach(x => someFunc(x))
In Java, I know the second line could be simpler using Streams (at least for static methods), like so:
array.stream().map(ClassName::someFunc) ...
Essentially I'm asking is there an analog for the ClassName::someFunc part in JavaScript, instead of having to write x => someFunc(x)?
CodePudding user response:
In the simplest case, you can replace
array.forEach(x => someFunc(x))
with just
array.forEach(someFunc)
but there's some fine print you should be aware of:
this generally doesn't work with object methods:
.forEach(someObj.someMeth)won't workthe callback should accept exactly one argument or conform to the
forEachcalling conventioncallback(element, index, this). For example,array.map(parseInt)won't work either, becauseparseInthas its own idea of what the second argument means.
CodePudding user response:
Yes there is no need to wrap "someFunc" in an anonymous () => "arrow function"
As long as someFunc's first argument is configured to accept the currently iterated item from the array and do something with it then you can pass in a reference to that function as the argument in .forEach (but do not call it).
So you would do:
let array = [1, 2, 3]
array.forEach(someFunc)
Make sure not to do this:
let array = [1, 2, 3]
array.forEach(someFunc())
(note the calling parenthesis, this is bad)
