Динамические языки и переменные
От: Воронков Василий Россия  
Дата: 05.03.10 15:46
Оценка:
Вопрос такой.
Многие динамические языки позволяют неявно объявлять переменные (некоторые даже и вовсе не имеют синтаксиса для явного объявления, но это другой вопрос).
При этом в ряде случае такое объявление не рекомендуется.

Возьмем всем известный ДжаваСкрипт. Там объявление переменной без var считается моветоном, хотя бы потому что его семантика кардинально отличается от объявления с var (однако по коду это совершенно неочевидно):

function Foo()
{
  var x = 1; //переменная в скопе Foo
  y = 2; //А вот уже переменная в глобальном скопе
}


Если рассматривать проблему с т.з. ДжаваСкрипта, то там и вовсе становится непонятно, зачем нужна возможность неявного объявления. Я, к примеру, так не пишу никогда.
Но с другой стороны вышеуказанный пример и:

var obj = {};
...
obj.y = 2;


Вещи в принципе родственные.

Собственно, мой вопрос, как вы считаете — если в языке есть синтаксис для явного объявления переменных, насколько необходима поддержка неявного объявления? Если эту возможность убрать (т.е. в примере выше была бы ошибка) потеряет ли язык в выразительности?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.