Edited: The expression function foo() {return 20;}, foo()
was meant to be a single argument to console.log
).
This:
console.log((function foo() {return 20;}, foo()));
Doesn't work, I get ReferenceError
because foo
has not been defined.
Why?
console.log(function foo() {return 20;}, foo());
In this code, you are passing a named (foo
) function as an argument to console.log
. Got it? You've never declared function foo
, you're just passing it as an argument. In javascript a function declaration and a function expression has the same syntax hence the confusion.
That said, passing a named (instead of anonymous) function is almost always useless. Your code is equivalent to this:
console.log(function () {return 20;}, foo());
where function () {return 20;}
is an anonymous function in contrast to a named one. And anonymous functions are very wide-spread in JS, because again, names in named function expressions are mostly useless.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With