Жабное
Как можно называть языком программирования нечто, в котором тип переменной явно объявлять не надо (да и вообще объявлять тоже не особенно нужно), большая часть языка свободно понимает в зависимости от контекста где надо и не надо что тут как строку, а тут как число…. Но при этом в некоторых случаях требует только строго следования типу. Т.е. приведенная ниже конструкция хрен работает (Google Maps API v2).
z='15';
map.setZoom(z);
А вот такая работает как за здрасти.
z=parseInt('15');
map.setZoom(z);
И на фоне этого совершенно издевательски выглядит, безотносительного типа этой несчастной зэт.
alert(z)
Жуть какая-то
Пока отловил этот глюк, думал поседею.
Кстати!!! На свалке GPS треков произошли некоторые изменения (а скоро произойдут и дополнения). Так что если кому чего хочется видеть там из плюшек – рассказывайте, а то мне в принципе и того спартанства, что есть хватает.
Ой, какие мы нежные. Можно подумать в пхп сильно обьявляются как сами переменные, так и их тип. Там точно так же можно наступить на грабли приведения типов в разных узких местах.
В интернете много копий сломано над тезисом “Строгая формализация ЯП – хорошо это или плохо”. Как и везде, в общем-то, у каждой стороны есть свои плючы и минусы.
@lizard
В ПХП ни разу не видел, что бы строка содержащая только цифры не была воспринята в нужном месте как инт. Даже если принудительно объявить её строкой.
С жабосриптром работаю не много, и всегда дико удивляюсь возможности конструкции вида
href.split(‘&’)[1]. Как бы понимаю, что ничего невозможного, но человек воспитанный на классических паскале и с воспринимает как-то не совсем адекватно.
Язык, как язык. Тип есть и определяется при присваивании. Достаточно типично для скриптовых, т.е. таких, на которых нужно быстренько писать что-то не очень сложное. А что alert принимает и строку и число – так почему бы и нет? Перегрузка функций есть даже в таких строго типизированых языках, как собсно Java или, там, C++.
Кстати, рекомендую выучить Python. Там тоже такой подход к типам. И вполне валидна операция сравнения строки и числа. Причём ты фиг догадаешься по какому принципу определяется результат
@Moveton
Дык лажа не в том, что тип не присваивается, а в том что не везде работает. Вместо alert можно привести операцию суммирования или что-то еще характерное для int. Весь прикол в том, что все эти языки для “написать побыстрому” уже давно используются для очень крупных проектов.
А про перезагрузку функций… Всё равно индекс массива у функции дико смотрится.
>Причём ты фиг догадаешься по какому принципу определяется результат

Ну не скажи. в отличии от, питон отлично документирован
И поведение его точно такое, как описано в документации, а не как описано в 15 коментарии пользователя к документации
Objects of different types, except different numeric types and different string types, never compare equal; such objects are ordered consistently but arbitrarily (so that sorting a heterogeneous array yields a consistent result). Furthermore, some types (for example, file objects) support only a degenerate notion of comparison where any two objects of that type are unequal. Again, such objects are ordered arbitrarily but consistently. The <, and >= operators will raise a TypeError exception when any operand is a complex number.
(c) http://docs.python.org/library/stdtypes.html
>Всё равно индекс массива у функции дико смотрится.
)
Смотря, что возвращает функция. Если масив – то почему бы и нет?
Я после питона частеньо в пхп пытаюсь так писать, а он чего-то не хочет
ЗЫЖ простите за возможные ошибки и опечатки, три раза перечитывал, и три раза находил новые, еще не проснуля
@lizard
Мне не надо питоновскую доку цитировать. Я это в ней уже прочитал. Как раз после того, как пару часов угробил в отладке, пока нашёл, почему ж написаное такой странный результат выдаёт.
@white
Такое. “Это невозможно понять, это нужно запомнить”. Хочешь простоты преобразований: пиши на REXX или sh. Кстати, если строка+число – это сумма, а не строковая конкатенация, то это непривычно уже для меня. Хотя давно не брал я в руки шашек. Уже и не помню, какой в яваскрипте оператор для конкатенации.
/me пожал плечами.