Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Web-программирование - это просто!


 

Новое на сайте Программирование - это просто! (www.easyprog.ru):

В бесплатном разделе

В платном разделе

Добрый день, уважаемые подписчики!

Тема сегодняшнего выпуска: «Java Script: преобразование типов данных».

 

В Java Script преобразование типов данных, участвующих в выражении, производиться автоматически. Например, если мы запишем:

а=10 + "негритят"

 

то переменная 'a' у нас будет содержать строку "10 негритят", то есть, у нас число автоматом преобразуется в строку, к которой прибавиться другая строка. Если мы запишем выражение:

3+"2"

то в результате у нас будет срока "32". Тоесть, если мы складываем числа и строки, то система думают, что числа - это строки и преобразует их именно в строки. Почему так? А потому, что мы не можем сложить число со строкой. А про то, что "2" - это число, записанное в форму строки, компьютер не догадывается. Другое дело, если мы попытаемся вычесть из числа строку:

3-"2"

в результате получим 1. Давайте проверим это на примере:

 

<HTML>
<HEAD>
<TITLE>Урок 27. Java script: Преобразование типов</TITLE>
</HEAD>

<BODY>
<SCRIPT Language="JavaScript" type="text/javascript">
a=3;
b="2";
c=a-b;
document.write(c);
</SCRIPT>
</BODY>
</HTML>

 

Как и следовало ожидать, результатом вычисления стала единица:

 

 

Спрашивается, а почему в случае с вычитанием строки преобразуются в числа, а при сложении числа в строки? А потому, что мы не можем вычесть одну строку из другой, это бессмыслица какая то получается. Е если мы попробуем из числа вычесть строку, которая не может быть преобразована в число? Давайте проверим:

 

<HTML>
<HEAD>
<TITLE>Урок 27. Java script: Преобразование типов</TITLE>
</HEAD>

<BODY>
<SCRIPT Language="JavaScript" type="text/javascript">
a=3;
b="это не число";
c=a-b;
document.write(c);
</SCRIPT>
</BODY>
</HTML>

 

И вот что нам выдала программа:

 

 

Возникает еще вопрос, а как быть, если нам надо сложить значения как числа, но они хранятся у нас в строковых переменных? Можно воспользоваться функцией parseInt или parseFloat. Рассмотрим работу этих функций на примере:

 

<HTML>
<HEAD>
<TITLE>Урок 27. Java script: Преобразование типов</TITLE>
</HEAD>

<BODY>
<SCRIPT Language="JavaScript" type="text/javascript">
document.write(1+parseFloat("3.14"));
document.write("<br>")
document.write(1+parseInt("3.14"));
document.write("<br>")
document.write(1+"3.14")
</SCRIPT>
</BODY>
</HTML>

 

Вот что выдаст нам программа:

 

 

Как видим, parseInt отличается от  parseFloat тем, что первая просто тупо и решительно отбрасывает дробную часть.

 

Если в арифметическом выражении у нас встретиться логический тип, то значение true преобразуется к 1, false к 0. Если встретиться null, то он будет преобразован в 0, если undefined - то в NaN.

В логических выражениях значения будут преобразованы к булевому типу. 0, пустая строка (""), NaN, null, undefined при этом преобразуются в значение false, любое другое значение в true.

Следует так же помнить о том, что в Java Script нет разделения между целочисленным и дробным типом. Поэтому при делении целых чисел отсутствует автоматическое преобразование в целое число. В частности в Pascal-е результат деления 1/3 будет 0, а в JavaScript 0.3333333333.

 

С уважением, Шуравин Александр, e-mail: megabax@rambler.ru, автор оставляет за собой право публиковать в рассылках ваши письма, если в письме прямо неоговорено нежелание его публиковать.

 


В избранное