Can an Object be false?

前端 未结 9 1605
温柔的废话
温柔的废话 2020-12-06 04:35

Is there any way to make an object return false in javascript?

var obj = new Object();

console.log(!!obj) // prints \"true\" even if it\'s empty
         


        
9条回答
  •  没有蜡笔的小新
    2020-12-06 04:53

    As of ES8, no, you cannot make an object evaluates to false in JavaScript.

    In the specification, all boolean checks (? ! if etc.) depends on ToBoolean,
    which is very, very simple:

    • False if undefined, null, false, zero, NaN, or empty string.
    • True for everything else (Object, Proxy, Symbol, etc.)

    If the type of the input is object, the result is true. No question asked. No valueOf, no special case.

    There is no way to create a falsy object in JavaScript. Only non-objects can be falsy.

    Sometimes you may run into object-like "stuff" that return false. Empty string, for example, are used like an object all the time. document.all is another falsy "object".

    These are not real objects, however. They cannot have custom properties, cannot be used as prototype, and does not always behave like an object e.g. typeof or strict equal.

    This behaviour is most likely here to stay for backward compatibility.

提交回复
热议问题