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?

questionAnswers(5)

yourAnswerToTheQuestion