Why does comparing value with undefined returns false in JavaScript?












2















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);












share|improve this question




















  • 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 value undefined against a number and that returns false.. More about undefined

    – Yosvel Quintero
    Nov 20 '18 at 4:44


















2















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);












share|improve this question




















  • 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 value undefined against a number and that returns false.. More about undefined

    – Yosvel Quintero
    Nov 20 '18 at 4:44
















2












2








2








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);












share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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 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
















  • 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 value undefined against a number and that returns false.. 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














1 Answer
1






active

oldest

votes


















4














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





share|improve this answer























    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
    });


    }
    });














    draft saved

    draft discarded


















    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









    4














    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





    share|improve this answer




























      4














      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





      share|improve this answer


























        4












        4








        4







        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





        share|improve this answer













        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






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 20 '18 at 4:49









        Bhojendra RauniyarBhojendra Rauniyar

        50.8k2079125




        50.8k2079125






























            draft saved

            draft discarded




















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            MongoDB - Not Authorized To Execute Command

            Npm cannot find a required file even through it is in the searched directory

            in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith