Why does comparing value with undefined returns false in JavaScript?
I am new to Javascript and I noticed when a variable is undefined
, comparing a number returns false
as below. Why does comparing undefined
with numbers return false
?
var a = undefined;
console.log(a < 10);
console.log(10 < a);
console.log(a == 10);
javascript comparison undefined
add a comment |
I am new to Javascript and I noticed when a variable is undefined
, comparing a number returns false
as below. Why does comparing undefined
with numbers return false
?
var a = undefined;
console.log(a < 10);
console.log(10 < a);
console.log(a == 10);
javascript comparison undefined
2
What would you expect those to return? Certainly not true
– charlietfl
Nov 20 '18 at 4:41
Read: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
– Randy Casburn
Nov 20 '18 at 4:41
Because you are comparing the globalundefined
property that represents the primitive valueundefined
against anumber
and that returnsfalse
.. More about undefined
– Yosvel Quintero
Nov 20 '18 at 4:44
add a comment |
I am new to Javascript and I noticed when a variable is undefined
, comparing a number returns false
as below. Why does comparing undefined
with numbers return false
?
var a = undefined;
console.log(a < 10);
console.log(10 < a);
console.log(a == 10);
javascript comparison undefined
I am new to Javascript and I noticed when a variable is undefined
, comparing a number returns false
as below. Why does comparing undefined
with numbers return false
?
var a = undefined;
console.log(a < 10);
console.log(10 < a);
console.log(a == 10);
var a = undefined;
console.log(a < 10);
console.log(10 < a);
console.log(a == 10);
var a = undefined;
console.log(a < 10);
console.log(10 < a);
console.log(a == 10);
javascript comparison undefined
javascript comparison undefined
edited Nov 20 '18 at 5:21
Towkir Ahmed
949620
949620
asked Nov 20 '18 at 4:37
Poream3387Poream3387
523214
523214
2
What would you expect those to return? Certainly not true
– charlietfl
Nov 20 '18 at 4:41
Read: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
– Randy Casburn
Nov 20 '18 at 4:41
Because you are comparing the globalundefined
property that represents the primitive valueundefined
against anumber
and that returnsfalse
.. More about undefined
– Yosvel Quintero
Nov 20 '18 at 4:44
add a comment |
2
What would you expect those to return? Certainly not true
– charlietfl
Nov 20 '18 at 4:41
Read: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
– Randy Casburn
Nov 20 '18 at 4:41
Because you are comparing the globalundefined
property that represents the primitive valueundefined
against anumber
and that returnsfalse
.. More about undefined
– Yosvel Quintero
Nov 20 '18 at 4:44
2
2
What would you expect those to return? Certainly not true
– charlietfl
Nov 20 '18 at 4:41
What would you expect those to return? Certainly not true
– charlietfl
Nov 20 '18 at 4:41
Read: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
– Randy Casburn
Nov 20 '18 at 4:41
Read: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
– Randy Casburn
Nov 20 '18 at 4:41
Because you are comparing the global
undefined
property that represents the primitive value undefined
against a number
and that returns false
.. More about undefined– Yosvel Quintero
Nov 20 '18 at 4:44
Because you are comparing the global
undefined
property that represents the primitive value undefined
against a number
and that returns false
.. More about undefined– Yosvel Quintero
Nov 20 '18 at 4:44
add a comment |
1 Answer
1
active
oldest
votes
This is how works in JavaScript.
Number(undefined) // NaN
NaN == NaN // false
NaN < 0 // false
NaN > 0 // false
So, while you compare it forces to check like:
Number(undefined) < 10
// undefined is coerced to check with number
And thus,
undefined == 10 // false
undefined > 10 // false
undefined < 10 // false
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53386326%2fwhy-does-comparing-value-with-undefined-returns-false-in-javascript%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
This is how works in JavaScript.
Number(undefined) // NaN
NaN == NaN // false
NaN < 0 // false
NaN > 0 // false
So, while you compare it forces to check like:
Number(undefined) < 10
// undefined is coerced to check with number
And thus,
undefined == 10 // false
undefined > 10 // false
undefined < 10 // false
add a comment |
This is how works in JavaScript.
Number(undefined) // NaN
NaN == NaN // false
NaN < 0 // false
NaN > 0 // false
So, while you compare it forces to check like:
Number(undefined) < 10
// undefined is coerced to check with number
And thus,
undefined == 10 // false
undefined > 10 // false
undefined < 10 // false
add a comment |
This is how works in JavaScript.
Number(undefined) // NaN
NaN == NaN // false
NaN < 0 // false
NaN > 0 // false
So, while you compare it forces to check like:
Number(undefined) < 10
// undefined is coerced to check with number
And thus,
undefined == 10 // false
undefined > 10 // false
undefined < 10 // false
This is how works in JavaScript.
Number(undefined) // NaN
NaN == NaN // false
NaN < 0 // false
NaN > 0 // false
So, while you compare it forces to check like:
Number(undefined) < 10
// undefined is coerced to check with number
And thus,
undefined == 10 // false
undefined > 10 // false
undefined < 10 // false
answered Nov 20 '18 at 4:49


Bhojendra RauniyarBhojendra Rauniyar
50.8k2079125
50.8k2079125
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53386326%2fwhy-does-comparing-value-with-undefined-returns-false-in-javascript%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
What would you expect those to return? Certainly not true
– charlietfl
Nov 20 '18 at 4:41
Read: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
– Randy Casburn
Nov 20 '18 at 4:41
Because you are comparing the global
undefined
property that represents the primitive valueundefined
against anumber
and that returnsfalse
.. More about undefined– Yosvel Quintero
Nov 20 '18 at 4:44