Динамическая типизация

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск

Динами́ческая типиза́ция — приём, широко используемый в языках программирования и языках спецификации, при котором переменная связывается с типом в момент присваивания значения, а не в момент объявления переменной. Таким образом, в различных участках программы одна и та же переменная может принимать значения разных типов. Примеры динамически типизированных языков — Smalltalk, Python, Руби, PHP, Perl, JavaScript.

Противоположный приём — статическая типизация.

В некоторых языках с динамической типизацией стоит проблема сравнения величин, так, например, PHP имеет операторы сравнения «==», «!=» и «===», «!==», где вторая пара операторов сравнивает значения и типы переменных. Оператор «===» даёт true только при полном совпадении, в отличие от «==», который считает верным такое выражение: (1=="1"). Стоит отметить, что это проблема не динамической типизации в целом, а конкретных языков программирования.

[править] Примеры

  • В PHP:
<html><head><title>test</title></head>
<body>
<?php
  $res  = "string1"; echo $res.'<br />';  // выводит "string1"
  $res  = 1;         echo $res.'<br />';  // выводит "1"
  $res += 2;         echo $res.'<br />';  // выводит "3"
  $res .= "string2"; echo $res.'<br />';  // выводит "3string2"
?>
</body>
</html>  
  • В JavaScript:
<html><head><title>test</title></head>
<body>
<script type="text/javascript">
function DoTest(obj) {
  var res = "string1";  alert(res);  // выводит «string1»
      res = 1;          alert(res);  // выводит «1»
      res += 2;         alert(res);  // выводит «3»
      res += 'string2'; alert(res);  // выводит «3string2»
}
</script>
<a href="#" onClick="DoTest()">Click to test</a>
</body></html>

[править] См. также

[править] Ссылки

  • Sitepoint: «Introduction to Static and Dynamic Typing» [1]
На других языках