Automatyczna konwersja typu w JavaScript
Poniższe wszystkie wyrażenia w JavaScript są oczywiste.
var x = 10 + 10;
Wartośćx
jest20
.
x = 10 + '10';
Wartośćx
w tym przypadku jest1010
ponieważ+
operator jest przeciążony. Jeśli którykolwiek z operandów jest typu string, następuje konkatenacja łańcuchów i jeśli wszystkie operandy są liczbami, wykonywane jest dodawanie.
x = 10 - 10;
x = 10 - '10';
W obu tych przypadkach wartośćx
będzie0
ponieważ-
operator nie jest przeciążony w ten sposób i wszystkie operandy są konwertowane na liczby, jeśli nie są wykonywane przed faktycznym odejmowaniem (możesz wyjaśnić, jeśli w każdym razie się mylę).
Co dzieje się w następującym wyrażeniu.
x = '100' - -'150';
Wartośćx
jest250
. Co również wydaje się oczywiste, ale to wyrażenie wydaje się być odpowiednikiem następującego wyrażenia.
x = '100' +'150';
Gdyby tak było, te dwa ciągi zostałyby połączone i przypisane100150
dox
. Dlaczego więc w tym przypadku wykonywane jest dodawanie?
EDYTOWAĆ :
+'10' + 5
zwraca15
i'a' + + 'b'
zwracaaNaN
. Czy ktoś wie dlaczego?