A collection of tricky JavaScript expressions with Automatic Type Conversion
Sometimes JavaScript program outputs is not what a developer might expect. In this minipost we have gathered a small collection of expressions that are evaluated with not such an expected outcome. The below expressions can become very tricky and could be appeared as interview questions.
Automatic Type Conversion
When a JavaScript operator is applied to the “wrong” type of value, it is quietly converted to a type using a set of rules that are often, not what is expected. This is called type coercion.
Let's demonstrate the following tricky expressions and their outputs:
> 4 * null; < 0
In this expression null
becomes 0
and the output is also 0
.
> "4" - 1; < 3
The String "4"
is being evaluated as integer 4
and the arithmetic operation of subtraction is being performed resulting to the arithmetic 3
.
> "4" + 1; < "41"
In this expression the String concatenation is being evaluated before the numeric addition. Therefore, the 1
is converted to "1"
and the output is the concatenated String of "41"
.
> "four" * 1; < NaN
> undefined * 1; < NaN
> NaN * 1; < NaN
When we cannot have a straightforward conversion to a number, the value NaN
is produced. Further on, NaN
in an expression keeps producing NaN
outputs.