JavaScript has unique behaviours that can be puzzling. Let's go through some of them with examples to understand better.
1. Arrays Equal Strings
In JavaScript, comparing an array to a string using the equality operator (==
) can lead to unexpected results:
When comparing a
or b
with c
, JavaScript converts the arrays to strings, resulting in a comparison of '0,1,2' == '0,1,2'
, which is true
. However, when comparing a
and b
, it checks for object reference equality, and since a
and b
refer to different arrays in memory, the result is false
.
2. Numbers Are Sorted Alphabetically
JavaScript’s default sort method converts numbers to strings and sorts them lexicographically (alphabetically):
3. String Is Not a String
The typeof
operator can be misleading when used with strings:
The typeof
operator returns 'string'
for string literals. However, instanceof
checks for an instance of the String object wrapper, which is not the same as a string literal.
4. Null Comparisons
Comparing null
can yield unintuitive results:
In relational comparisons, null
is treated like 0
. However, with non-strict equality (==
), null
is only equal to undefined
and no other value.
Part 2: https://www.buymeacoffee.com/codecrumbs/the-weird-side-javascript-explained-part-2
Original post: https://www.instagram.com/p/C1KUenOsCU9/?utm_source=ig_web_copy_link&igsh=MzRlODBiNWFlZA==