ECMAScript wykonuje automatyczną konwersję typów.
| Argument | Rezultat |
|---|---|
| Object | Zwraca wartość domyślną dla obiektu. |
| Pozostałe Typy | Wynik jest równy argumentowi (bez konwersji). |
| Argument | Rezultat |
|---|---|
| Undefined | false |
| Null | false |
| Number | false jeśli argumentem jest +0, −0 lub NaN; true dla pozostałych. |
| String | false jeśli argumentem jest pusty String; true dla pozostałych. |
| Symbol | true. |
| Object | true. |
| Argument | Rezultat |
|---|---|
| Undefined | NaN |
| Null | +0 |
| Boolean | 1 jeżeli argumentem jest true. +0 jeżeli argumentem jest false. |
| String | [ECMA262] |
| Symbol | [ECMA262] |
| Object | [ECMA262] |
Mnożenie przez 1 lub operator + wymuszają konwersję na typ numeryczny.
| Argumenth | Rezultat |
|---|---|
| Undefined | "undefined" |
| Null | "null" |
| Boolean | true jeśli argumentem jest "true";
false jeśli argumentem jest "false". |
| Number | [ECMA262] |
| Symbol | [ECMA262] |
| Object | [ECMA262] |
| Undefined | TypeError. |
| Null | TypeError. |
| Boolean | new Boolean object |
| Number | new Number object |
| String | new String object |
| Symbol | [ECMA262] |
| Object | argument |
Uwaga: Przecinek nie jest separatorem dziesiętnym i nie konwertuje się automatycznie.