Why Do Functions Return `undefined` Instead Of `null` By Default?
Solution 1:
The specification says of null
and undefined
:
undefined value
primitive value used when a variable has not been assigned a value
null value
primitive value that represents the intentional absence of any object value
undefined
represents a failure to assign a value. It is the total absence of a value. null
represents the positive assertion of a non-value in an object context. null
is intended to be used when an object is expected but the current value is no-object.
Given these two definitions, it seems obvious that undefined
is the correct choice, since
- functions can return values other than objects, and
- a failure to specify a return value maps neatly onto a failure to assign a value
Solution 2:
That's part of the specification. If no explicit return value is returned from a given function, the return value will always be undefined.
When a return statement is called in a function, the execution of this function is stopped. If specified, a given value is returned to the function caller. If the expression is omitted, undefined is returned instead
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return
Solution 3:
Few key statements to answer your question
JavaScript does not have a void type, so every function must return a value. The default value is undefined, except for constructors, where the default return value is this.
undefined and null are two distinct types: undefined is a type itself (undefined) while null is defined.
So, if you have returned nothing then it has to be nothing i.e. undefined.
Solution 4:
null
is a defined value, there are two states for any variable, defined and undefined.
var a; // declared but undefined, has nothing in it; does not mean its null
var b = null; // declared and defined as null;
Every function in javascript has a implicit return: return;
like in any other language to mark the end of the function. So it returns with nothing, which if you try to log, it will give you undefined
Solution 5:
The ECMAScript specification explicitly states that functions return undefined
if no other return is specified. It's the default behaviour of the language.
See the last step in the [[Call]]
internal method specification:
9.2.1 [[Call]] ( thisArgument, argumentsList)
The [[Call]] internal method for an ECMAScript function object F is called with parameters thisArgument and argumentsList, a List of ECMAScript language values. The following steps are taken:
…
11. Return NormalCompletion(undefined).
Note that null
and undefined
are two distinct values in JavaScript. Again, according the the specification:
4.3.10 undefined value
primitive value used when a variable has not been assigned a value
4.3.12 null value
primitive value that represents the intentional absence of any object value
Post a Comment for "Why Do Functions Return `undefined` Instead Of `null` By Default?"