Reputation: 15176
I was just wondering, does a function without a return statement (or without hitting any return statements) return a value that is completely equivalent to false?
For example:
function foo(){};
!!foo();
This should return false if executed in firebug (but does not return anything if i just called foo();).
Thanks a lot!
Jason
Upvotes: 61
Views: 23169
Reputation: 39986
to find out, try this in firebug console:
alert((function(){})());
Upvotes: 0
Reputation:
<html>
<body>
<script>
function a() {}
alert(a());
</script>
</body>
</html>
Upvotes: 2
Reputation: 827842
A function without a return statement (or one that ends its execution without hitting one) will return undefined
.
And if you use the unary negation operator twice on an undefined
value, you will get false
.
You are not seeing anything on the console because Firebug doesn't prints the result of an expression when it's undefined (just try typing undefined;
at the console, and you will see nothing).
However if you call the console.log
function directly, and you will be able to see it:
function foo(){}
console.log(foo()); // will show 'undefined'
Upvotes: 78