Sunday, 4 September 2016

javascript - Why is null an object and what's the difference between null and undefined?



Why is null considered an object in JavaScript?



Is checking



if ( object == null )
Do something


the same as



if ( !object )
Do something


?



And also:



What is the difference between null and undefined?


Answer



(name is undefined)


You: What is name? (*)
JavaScript: name? What's a name? I don't know what you're talking about. You haven't ever mentioned any name before. Are you seeing some other scripting language on the (client-)side?



name = null;


You: What is name?
JavaScript: I don't know.



In short; undefined is where no notion of the thing exists; it has no type, and it's never been referenced before in that scope; null is where the thing is known to exist, but it's not known what the value is.



One thing to remember is that null is not, conceptually, the same as false or "" or such, even if they equate after type casting, i.e.



name = false;


You: What is name?
JavaScript: Boolean false.



name = '';


You: What is name?
JavaScript: Empty string






*: name in this context is meant as a variable which has never been defined. It could be any undefined variable, however, name is a property of just about any HTML form element. It goes way, way back and was instituted well before id. It is useful because ids must be unique but names do not have to be.


No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...