This returns true:
[] == false
But here, alert is called:
if([]){ alert('empty array is true here'); }
Can you explain why?
Is empty array True or false?
Because Array is type of object , the fact that an empty Array is conversed to true is correct.
Is an empty array equal to false?
Empty arrays are true but they're also equal to false.
How do you check if an array is empty?
To check if an array is empty or not, you can use the . length property. The length property sets or returns the number of elements in an array. By knowing the number of elements in the array, you can tell if it is empty or not.
What is value of empty array?
An array value can be non-empty, empty (cardinality zero), or null. The individual elements in the array can be null or not null. An empty array, an array value of null, and an array for which all elements are the null value are different from each other. An uninitialized array is a null array.
According to section 11.9.3 of the ECMAScript® Language Specification, any ==
comparison is done as follows:
- If Type(x) is the same as Type(y), then
- If Type(x) is Undefined, return true.
- If Type(x) is Null, return true.
- If Type(x) is Number, then
- If x is NaN, return false.
- If y is NaN, return false.
- If x is the same Number value as y, return true.
- If x is +0 and y is −0, return true.
- If x is −0 and y is +0, return true.
- Return false.
- If Type(x) is String, then return true if x and y are exactly the same sequence of characters (same length and same characters in corresponding positions). Otherwise, return false.
- If Type(x) is Boolean, return true if x and y are both true or both false. Otherwise, return false.
- Return true if x and y refer to the same object. Otherwise, return false.
- If x is null and y is undefined, return true.
- If x is undefined and y is null, return true.
- If Type(x) is Number and Type(y) is String,
return the result of the comparison x == ToNumber(y).
- If Type(x) is String and Type(y) is Number,
return the result of the comparison ToNumber(x) == y.
- If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y.
- If Type(y) is Boolean, return the result of the comparison x == ToNumber(y).
- If Type(x) is either String or Number and Type(y) is Object,
return the result of the comparison x == ToPrimitive(y).
- If Type(x) is Object and Type(y) is either String or Number,
return the result of the comparison ToPrimitive(x) == y.
- Return false.
In the first step, ToNumber()
is applied to false
and yields Number(0)
. In the second step, rule #9 applies ToPrimitive()
to the empty array and yields ""
which, cast to a numeric value, becomes Number(0)
as well.
Additionally section 9.2 says this about using an object in an expression:
The abstract operation ToBoolean
converts its argument to a value of type Boolean according to this table:
- Undefined -> false
- Null -> false
- Boolean -> The result equals the input argument (no conversion).
- Number -> The result is false if the argument is +0, −0, or NaN; otherwise the result is true.
- String -> The result is false if the argument is the empty String (its length is zero); otherwise the result is true.
- Object -> true