JS и его "недостатки"
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.123] |
|
|
Правила раздела:
| Страницы: (66) « Первая ... 11 12 [13] 14 15 ... 65 66 ( Перейти к последнему сообщению ) |
JS и его "недостатки"
|
Сообщ.
#182
,
|
|
|
|
Цитата Астарот @ Да и вообще, имхо у тебя просто играет инерция - ты привык рассматривать null в одном качестве, здесь рассматривается в другом. Неужели "уровень" того же питона так сильно отличается от php? Везде, где был null, он был в одном качестве... Даже в SQL если ты запросишь несуществующую колонку в таблице, это будет ошибка, а не NULL. |
|
Сообщ.
#183
,
|
|
|
|
Цитата Мяут-Настоящий @ Python наше все ![]() Да я не против, мне-то чего? ![]() Цитата Мяут-Настоящий @ Вот только мы о javascript ![]() Я тебе за js и сказал зачем там нужен '==='. Цитата D_KEY @ Неужели "уровень" того же питона так сильно отличается от php? Я питон не знаю, но в пыхе вот так Может неудобно, но определяющим я бы тут сделал вот что - испытывает народ от этого постоянную анальную боль, или нет? Насколько я знаю - нет, значит вполне можно с этим жить и в ус не дуть. Добавлено Уж на трагедь всех времен и народов точно не тянет |
|
Сообщ.
#184
,
|
|
|
|
JavaScript:
![]() ![]() >> a = "x" >> b = 1 >> a - b NaN WTF? |
|
Сообщ.
#185
,
|
|
|
|
Я бы сказал наоборот, после плюсов - пыхпых просто мана небесная
|
|
Сообщ.
#186
,
|
|
|
|
Цитата Мяут-Настоящий @ WTF? Ну, а тут-то тебя что смутило, чудо в перьях? Добавлено Мяут-Настоящий, ты по приколу посмотри что тебе вернет 1/0 За одно будет повод покричать "а где мое исключение?!" |
|
Сообщ.
#187
,
|
|
|
|
Цитата Serafim @ Ой, слабая типизация уже отстой я так понял? Ну кидаем в мусорку помимо JS ещё AS, F#, Ты не путаешь слабую типизацию с динамической, нет? А все, уже выяснили, что перепутал Понаписали... Добавлено Цитата Астарот @ Может неудобно, но определяющим я бы тут сделал вот что - испытывает народ от этого постоянную анальную боль, или нет? Насколько я знаю - нет, значит вполне можно с этим жить и в ус не дуть. Все познается в сравнении. Меня когда-то и допотопный бейсик устраивал... Добавлено Цитата Астарот @ Мяут-Настоящий, ты по приколу посмотри что тебе вернет 1/0 За одно будет повод покричать "а где мое исключение?!"Смотря кто. С/С++ - зависит от реализации. Python, естественно, кинет исключение. А js что сделает? |
|
Сообщ.
#188
,
|
|
|
|
Цитата D_KEY @ Все познается в сравнении. Меня когда-то и допотопный бейсик устраивал... И что? Это ж не повод называть бейсик убогим, богомерзким и так далее. Цитата D_KEY @ А js что сделает? Если склероз не врет - вернет Infinity. А вот 0/0 вернет NaN Добавлено Цитата D_KEY @ Python, естественно О естественности - вопрос открытый |
|
Сообщ.
#189
,
|
|
|
|
Цитата Serafim @ Я бы сказал наоборот, после плюсов - пыхпых просто мана небесная А сколько времени ты на плюсах писал? Чтобы оценить язык, нужно его знать и понимать зачем он нужен. А С++ в этом смысле язык специфический Добавлено Цитата Астарот @ Это ж не повод называть бейсик убогим, богомерзким и так далее. Почему бы не назвать вещи своими именами ?Говорят, VB вроде ничего еще, но тут судить не берусь - не знаю. |
|
Сообщ.
#190
,
|
|
|
|
Цитата D_KEY @ А сколько времени ты на плюсах писал? Чтобы оценить язык, нужно его знать и понимать зачем он нужен. Ну, кое-кто тут берется не только оценивать, но и судить язык в котором толком не разбирается И все из-за областей видимости |
|
Сообщ.
#191
,
|
|
|
|
Цитата Астарот @ Ну, а тут-то тебя что смутило, чудо в перьях? То что строка минус число не дает ошибки времени компиляции или исполнения. |
|
Сообщ.
#192
,
|
|
|
|
Цитата Мяут-Настоящий @ То что строка минус число не дает ошибки времени компиляции или исполнения. И таки що? За тебя эту ошибку обработали и вернули NaN, говоря, что произошла ошибка в математике |
|
Сообщ.
#193
,
|
|
|
|
Цитата Астарот @ Ну, кое-кто тут берется не только оценивать, но и судить язык в котором толком не разбирается И все из-за областей видимости ![]() Области видимости достаточно общая концепция. Решение, принятое в js странное(на мой взгляд). Если принимается решение о том, что переменные "поднимаются" в начало области видимости, то нужно было установить правилами языка, что переменные можно объявлять только в начале блока(как и было сделано в изначальном С). Это хотя бы последовательно. Если же не хотелось так ограничивать программиста, то нужно было сделать примерно так же, как во многих других языках - переменная видна с момента объявления и до конца блока, в котором объявлена. Не согласен? |
|
Сообщ.
#194
,
|
|
|
|
Цитата Астарот @ И таки що? За тебя эту ошибку обработали и вернули NaN, говоря, что произошла ошибка в математике ![]() Таки ничего не мешает мне присвоить этот самый NaN и использовать в дальнейших вычислениях, что еще более спутает карты. Для того, чтобы проверить такой тип ошибки мне нужно явно вставить оператор проверки: ![]() ![]() if(c == NaN) alert('error'); Это же возврат во вчерашний день, во всем мире уже используются исключения Добавлено Роберт Мартин кстати призывает за возврат null по рукам бить (в Java), и вполне себе справедливо. С NaN та же самая ситуация |
|
Сообщ.
#195
,
|
|
|
|
Цитата D_KEY @ Области видимости достаточно общая концепция. Решение, принятое в js странное(на мой взгляд). Если принимается решение о том, что переменные "поднимаются" в начало области видимости, то нужно было установить правилами языка, что переменные можно объявлять только в начале блока(как и было сделано в изначальном С). Это хотя бы последовательно. Если же не хотелось так ограничивать программиста, то нужно было сделать примерно так же, как во многих других языках - переменная видна с момента объявления и до конца блока, в котором объявлена. Не согласен? Нужно... Не нужно... Есть два факта, первый - область видимости не блок, а функций, и второй - объявления переменных неявно поднимаются в начало области видимости. Второе, как я уже говорил, обусловлено двупроходной работой браузера - перед началом выполнения ему нужно получить все данные, вот он в не явном виде и присваивает переменным 'undefined'. Устанавливать что-то правилами языка в данном случае значит навязывать программисту проблемы браузера - это ж браузеру нужно что б переменные были изначально во что-то да установлены, а не прогеру. Так и оставили - прогер пишет так, как ему ближе, а браузер в тихую инициирует переменные в определенное значение. Добавлено Цитата Мяут-Настоящий @ Таки ничего не мешает мне присвоить этот самый NaN и использовать в дальнейших вычислениях, что еще более спутает карты. Таки тебе никто и в сях не мешает сделать что-то типа: Цитата #define 1 0 или как оно там? В общем ты понял о чем я. И ведь никакой фрустрации по этому поводу никто не испытывает, что сильно характерно ![]() Цитата Мяут-Настоящий @ Для того, чтобы проверить такой тип ошибки мне нужно явно вставить оператор проверки Цитата Мяут-Настоящий @ Это же возврат во вчерашний день, во всем мире уже используются исключения А то, что тебе что-то нужно вставить в исключение не беспокоит? |