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 Stream
s (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
forEach
calling conventioncallback(element, index, this)
. For example,array.map(parseInt)
won't work either, becauseparseInt
has 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)