Why is 'false' truthy in javascript?

前端 未结 5 1694
面向向阳花
面向向阳花 2021-01-19 10:46

I understand that an empty string is falsy in javascript and a not-empty string is truthy in javascript.

However, why is \'false\' truthy in javascript,

相关标签:
5条回答
  • 2021-01-19 11:07

    is there anything explicit in the specification?

    Yes:

    The result is false if the argument is the empty String (its length is zero); otherwise the result is true.

    0 讨论(0)
  • 2021-01-19 11:14

    In Javascript any string that is not empty is truthy.

    So, when evaluating any non-empty string results in true even when the string itself is 'false'.

    You can read more about truthy and falsy values.

    If you want to check a string for truthness, you can check it's length.

    var val = str.length > 0;
    
    0 讨论(0)
  • 2021-01-19 11:15

    Replying to the last part of your question:

    Are there situations where you would want the string 'false' to represent true?

    Let's consider I am testing for empty strings in my user input. To achieve that, I issue:

    if (!theInput) {
        // Do something.
    }
    

    Now do I want that condition to be true if the user enters false in the text box? Of course, I don't.

    0 讨论(0)
  • 2021-01-19 11:15

    The value of a non-empty string is always true.

    Boolean(false) returns false

    Boolean('false') returns true

    0 讨论(0)
  • 2021-01-19 11:23

    It's by definition. It's a string and it is handled as such. No matter the meaning of the string.

    If your logic would be applied. Then how about following examples:

    "1+3==2"
    "humans have four eyes"
    

    Are they also falsy?

    0 讨论(0)
提交回复
热议问题