JS и его "недостатки"
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.123] |
|
|
Правила раздела:
| Страницы: (66) « Первая ... 12 13 [14] 15 16 ... 65 66 ( Перейти к последнему сообщению ) |
JS и его "недостатки"
|
Сообщ.
#196
,
|
|
|
|
Цитата Мяут-Настоящий @ Роберт Мартин кстати призывает за возврат null по рукам бить (в Java), и вполне себе справедливо. Я вообще за специальный тип optional<T>/nullable<T> и чтоб никаких "самостоятельных" null'ов Естественно, если речь о "высоком". Для магии указателей NULL нужен. |
|
Сообщ.
#197
,
|
|
|
|
Вообще исключения в таких случаях - зло, которое только усложняет жизнь.
Добавлено Имхо, ессно. Добавлено D_KEY, так как, с поднятием переменных в начало области видимости убедил? |
|
Сообщ.
#198
,
|
|
|
|
Но речь именно об этом Зачем ты участвуешь в дискуссии, если тебе она не интересна?Цитата Таки тебе никто и в сях не мешает сделать что-то типа: Цитата #define 1 0 или как оно там? В общем ты понял о чем я. И ведь никакой фрустрации по этому поводу никто не испытывает, что сильно характерно ![]() Потому, что define'ы это очень специфичная штука. Его "случайно" не напишешь. Добавлено Цитата Астарот @ D_KEY, так как, с поднятием переменных в начало области видимости убедил? Я так и не понял, почему тогда язык допускает объявление в середине, если все-равно по факту переменные считаются объявленными в начале блока? |
|
Сообщ.
#199
,
|
|
|
|
Исключение - это стандартный механизм обработки ошибок. К тому же оно возникает именно в месте возникновения ошибки, в отличие от NaN, который может проследовать по ходу выполнения программы и привести к непредсказуемым последствиям. Ну также как я осознанно не буду делать так в сях, я также осозанно не буду использовать JavaScript, в котором даже оператор + ошибкам подвержен |
|
Сообщ.
#200
,
|
|
|
|
Цитата D_KEY @ Потому, что define'ы это очень специфичная штука. Его "случайно" не напишешь. Ага, то ли дело NaN - его "случайно" переопределить легче легкого Цитата D_KEY @ Я так и не понял, почему тогда язык допускает объявление в середине, если все-равно по факту переменные считаются объявленными в начале блока? Например, что бы ты мог писать в своем привычном стиле, как многие, кстати, и делают Объявляй себе переменные где угодно, просто имей ввиду, что изначально они заполнены хорошо известным значением 'undefined', а не чем-то еще. Это что, порождает какие-то проблемы или рвет шаблон?Цитата Мяут-Настоящий @ Исключение - это стандартный механизм обработки ошибок. К тому же оно возникает именно в месте возникновения ошибки, в отличие от NaN, который может проследовать по ходу выполнения программы и привести к непредсказуемым последствиям. Ага, а исключение не может никуда проследовать, например в родительский объект, если в текущем обработки исключения нет И уж чего не делает обработка исключений, так это не провоцирует на пустой catch Ни-ни, ни в коем случае! ![]() Ну, и как я уже говорил, имхо, не для того исключения придуманы. Цитата Мяут-Настоящий @ Ну также как я осознанно не буду делать так в сях Ну, значит и в js проблем не будет Действуя осознанно вообще можно избежать многих проблем. Добавлено Кстати, D_KEY, вот если честно я бы ожидал от тебя возмущений по поводу области видимости, а не по поводу всплытия переменных |
|
Сообщ.
#201
,
|
|
|
|
Цитата Мяут-Настоящий @ К тому же оно возникает именно в месте возникновения ошибки, в отличие от NaN, который может проследовать по ходу выполнения программы и привести к непредсказуемым последствиям. А ты случайно не позабыл, где используется JavaScript? Браузер кидает исключения в консоль и пытается продолжить выполнение кода. try-catch в JS тоже есть, так что можешь ловить это исключение при выполнении. Ошибки в скриптах JS - это нормальное явление, потому что браузеры разные. Ничего страшного, если функция выполнится не правильно - на сервере все равно проверка данных. Можно писать скрипты с строгой типоризацией... но похоже вы все дружно проигнорили мой предыдущий пост... http://jibbering.com/faq/notes/type-conversion/ Да даже в C++ приведение типов можно в скобках указывать (int)x |
|
Сообщ.
#202
,
|
|
|
|
Цитата Keepun @ Ошибки в скриптах JS - это нормальное явление Так и запишем. Я сегодня накодил 150 строк ошибок. Добавлено А кто-нибудь кстати Dart смотрел? |
|
Сообщ.
#203
,
|
|
|
|
Цитата Keepun @ Цитата Мяут-Настоящий @ К тому же оно возникает именно в месте возникновения ошибки, в отличие от NaN, который может проследовать по ходу выполнения программы и привести к непредсказуемым последствиям. А ты случайно не позабыл, где используется JavaScript? ![]() node.js, например Цитата Да даже в C++ приведение типов можно в скобках указывать (int)x Это наследие С. В С++ есть другие средства приведения типов. static_cast, dynamic_cast, const_cast, reinterpret_cast. Ну и boost::lexical_cast Добавлено Цитата Астарот @ Объявляй себе переменные где угодно, просто имей ввиду, что изначально они заполнены хорошо известным значением 'undefined', а не чем-то еще. Это что, порождает какие-то проблемы или рвет шаблон? Рвет шаблон тот факт, что они имеют значение undefined даже тогда, когда не существуют(до объявления) Цитата Кстати, D_KEY, вот если честно я бы ожидал от тебя возмущений по поводу области видимости, а не по поводу всплытия переменных ![]() Так вроде обсуждали тогда еще. |
|
Сообщ.
#204
,
|
|
|
|
Цитата MyNameIsIgor @ Очередная идиотская уверенность, что никто не знает про костыли в "три равно", которыми подпирается слабая типизация вкупе с динамической? Ну-ну... Это не связано с динамичностью/нестрогостью типизации. В той же джава есть (==) и equalTo(), а, например, для persistent-объектов (например при использовании Hibernate) так же рекомендуется переопределять метод hashCode(). Т.е. дело в семантике самих операций, ведь. ![]() ![]() class Some (int id -> this.id) { int id; public boolean equalTo (Object other) { return other instanceof Some && this.id == other.id; } } x = new Some (1); y = new Some (1); x == y; // => false x.equalTo(y); // => true |
|
Сообщ.
#205
,
|
|
|
|
Варнинг, но не ошибку
Были бы в JS варнинги, он бы тоже выдавал наверное... |
|
Сообщ.
#206
,
|
|
|
|
|
Сообщ.
#207
,
|
|
|
|
Цитата D_KEY @ ну вот какая разница 'undefined' или null?Рвет шаблон тот факт, что они имеют значение undefined даже тогда, когда не существуют(до объявления) (мы ведь уже разобрались, что в этом случае в вебе не должно быть ексепшенов?) |
|
Сообщ.
#208
,
|
|
|
|
Цитата Мяут-Настоящий @ А кто-нибудь кстати Dart смотрел? Только бегло. Он уныл, JS не заменит. Добавлено Цитата D_KEY @ node.js, например ![]() Это еще не делает серверное программирование -- нишей JS. И, думаю, не сделает никогда, т.к. тут уже "особенности" JS будут скорее мешать, чем помогать. |
|
Сообщ.
#209
,
|
|
|
|
Цитата korvin @ Только бегло. Он уныл, JS не заменит. Версия-то у него последняя 0.07 так что поживем увидим Добавлено Правда с другой стороны Цитата As of January 2012, Microsoft Internet Explorer, Mozilla Firefox, Opera Software Opera browser and Apple Safari do not have plans to implement support for Dart. |
|
Сообщ.
#210
,
|
|
|
|
Цитата fatalist @ ну вот какая разница 'undefined' или null? (мы ведь уже разобрались, что в этом случае в вебе не должно быть ексепшенов?) Нет, не разобрались. Использование несуществующей переменной может не быть ошибкой? |