Jaki typ będzie miała zmienna x po wykonaniu w języku JavaScript instrukcji
let x = "5" + 2;
A. niezdefiniowany (undefined)
B. liczbowy (number), a zmienna przyjmie wartość 7
C. napisowy (string), a zmienna przyjmie wartość "52"
D. logiczny (boolean)
Poprawna odpowiedź to napisowy (string), a zmienna przyjmie wartość „52”. W instrukcji let x = „5” + 2; operator + nie wykonuje dodawania arytmetycznego, ponieważ jeden z operandów jest napisem. JavaScript stosuje wtedy konkatenację, czyli łączenie tekstów. Liczba 2 zostaje automatycznie zamieniona na napis „2”, a następnie połączona z napisem „5”. Wynikiem jest więc „52”, a typ zmiennej x to string. Reguła do zapamiętania: przy operatorze + obecność napisu powoduje łączenie tekstu, a nie dodawanie liczb. W praktyce to częsta pułapka przy danych pobranych z formularzy, ponieważ wartości z pól input zwykle są tekstem i przed obliczeniami wymagają konwersji, np. Number(wartość).
W tym wyrażeniu decyduje nie wygląd wartości, lecz reguły operatora + w JavaScript. Odpowiedź liczbowy (number), a zmienna przyjmie wartość 7 byłaby trafna, gdyby oba operandy były liczbami, na przykład 5 + 2. Tutaj „5” jest napisem, więc JavaScript nie traktuje całego działania jako zwykłego dodawania. Odpowiedź logiczny (boolean) dotyczyłaby wartości true albo false, zwykle otrzymywanych przy porównaniach, np. x > 5, albo w warunkach instrukcji if. W podanej instrukcji nie ma operacji logicznej. Odpowiedź niezdefiniowany (undefined) pasowałaby do zmiennej bez przypisanej wartości albo do wyniku braku zwracanej wartości w pewnych funkcjach, a tutaj przypisanie występuje. Poprawna odpowiedź to napisowy (string), a zmienna przyjmie wartość „52”. Typowy błąd polega na założeniu, że JavaScript automatycznie zamieni napis „5” na liczbę 5, mimo że przy operatorze + z napisem wykonuje konkatenację.