Преобразование типов данных
Когда в выражениях встречаются переменные разных типов, интерпретатор JavaScript может автоматически преобразовывать численные данные в текстовые строки. Обратное же преобразование (строк в числа) приходится выполнять с помощью специальных функций, таких как parseInt и parseFloat.
Поясним это на примере (листинг 1.9).
Листинг 1.9. Файл Conversion/Conversion.html
<HTML>
<HEAD>
<TITLE>Type conversion sample</TITLE>
</HEAD>
<BODY BGCOLOR=white>
<H1>Type conversion sample</H1>
<TABLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
var szTextBuf = "";
szTextBuf = 4 + " - число четыре" + "<BR>";
szBuf2 = (parseInt("2") + 2) + " - число четыре" + "<BR>";
document.write(szTextBuf + szBuf2);
// -->
</SCRIPT>
</TABLE>
</BODY>
</HTML>
Здесь мы объявили переменную szTextBuf и проинициализировали ее пустой строкой. Далее мы присвоили этой строке сумму числа 4 и двух текстовых строк:
szTextBuf = 4 + " - число четыре" + "<BR>";
При вычислении этого выражения значение 4 было автоматически преобразовано в текстовую строку. Дальнейшее суммирование выполнялось как слияние (конкатенация) трех текстовых строк.
Обратите внимание на символ неразделяющего пробела , который используется в документах HTML. Если заменить его на обычный пробел, то после конкатенации строк этот пробел исчезнет.
В следующей строке мы преобразовываем текстовую строку “2” в численное значение с помощью функции parseInt, прибавляем к результату преобразования число 2, а затем выполняем конкатенацию с двумя текстовыми строками:
szBuf2 = (parseInt("2")+2)+" - число четыре"+ "<BR>";
В результате переменная szBuf2 будет содержать ту же самую строку, что и переменная szTextBuf, в чем нетрудно убедиться, взглянув на рис. 1.8.
Рис. 1.8. Результат работы сценария, представленного в листинге 1.9
Здесь в окне браузера отображаются две одинаковые строки, хотя они были получены разными способами.