JS и его "недостатки"
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.123] |
|
|
Правила раздела:
| Страницы: (66) « Первая ... 29 30 [31] 32 33 ... 65 66 ( Перейти к последнему сообщению ) |
JS и его "недостатки"
|
Сообщ.
#451
,
|
|
|
|
Цитата D_KEY @ В данном конкретном случае, интерпретатор почему-то позволяет вызывать функцию с неправильным набором аргументов, заменяя неуказанные аргументы этим самым undefined и пропуская лишние. Ты почему-то считаешь, что это нормально. Сильно подозреваю, что нужных слов для объяснения найти не смогу Попробуй пописать с учетом обоих подходов, может тогда поймешь сам Круто! Ты призываешь меня обосновывать твои слова в то время, как ты сам не можешь их обосновать? Круто!Пописать с разными подходами это, конечно, дело, только какой реакции ты на это ожидаешь? Что я скажу "да, в js полный отстой"? Это врятли - мне сейчас удобно, и этого факта не изменить на чем бы я еще не прогал, на то он и факт. Почти наверняка найдутся моменты, когда подход js будет хуже других подходов - это только убедит меня в том, что я и так знаю, а именно что всему свое место Иными словами - я и так вполне допускаю существование иных подходов и просто таки уверен, что они сделаны такими какие они есть не без причины. Так что это тебе нужно попрогать на js, а не мне на чем-то еще ![]() Да-да, слышали уже Кому не нужно, а кто использует и радуется.И это все, что ты сумел найти? Супротив "не собирается с ошибками компиляции"? Добавлено Цитата D_KEY @ В этом случае, если значение по умолчанию в языке таких выкрутасов не позволяют, то можно задать значением по умолчанию null, а в теле функции проверить и если null, то выполнить нужные действия. Т.е. опять имеем полный аналог, только без глупостей и неочевидный "неявностей" ![]() Ловко у тебя это получается То есть инициировать в null (что по сути есть тоже самое что инициализация в undefined) и наворачивать вокруг этого логику - это можно и хорошо, а вот готовый механизм для этого - это глупо, не очевидно и не явно Тебе самому не тошно от твоих явных и очевидных выкручиваний, как уж на сковородке, а? |
|
Сообщ.
#452
,
|
|
|
|
Цитата Астарот @ То есть инициировать в null (что по сути есть тоже самое что инициализация в undefined) Садись, два © |
|
Сообщ.
#453
,
|
|
|
|
Цитата Астарот @ Так что это тебе нужно попрогать на js, а не мне на чем-то еще ![]() Да я вроде пробовал... Причем как-то ни с чем из обсуждаемого не сталкивался... Но это были совсем простые скрипты и не для браузеров... Цитата Кому не нужно, а кто использует и радуется. За неимением лучшей альтернативы. Цитата Ловко у тебя это получается То есть инициировать в null (что по сути есть тоже самое что инициализация в undefined) и наворачивать вокруг этого логику - это можно и хорошо, а вот готовый механизм для этого - это глупо, не очевидно и не явно Смотри. В твоем случае данный пример будет выглядеть так: ![]() ![]() function f(a) В моем так: ![]() ![]() function f(a=null) В остальном - идентично. В моем случае мы явно указываем значение по умолчанию и это видно и клиентам и читателям кода, а так же всяким тулзам для генерации документации. Плохо ли? Кроме того, я по-прежнему не смогу вызывать эту функцию с двумя переменными - опять же контроль ошибок. Плохо? |
|
Сообщ.
#454
,
|
|
|
|
Цитата Астарот @ Супротив "не собирается с ошибками компиляции"? У меня из-за другого не собирается |
|
Сообщ.
#455
,
|
|
|
|
Цитата D_KEY @ За неимением лучшей альтернативы. В чем "лучшесть" альтернативы ты так и не сказал ![]() Цитата D_KEY @ Смотри. В твоем случае данный пример будет выглядеть так: Если вспомнить про то, что переменным изначально undefined присвоен, то вообще получится Цитата function f(a=undefintd) то есть почти полный аналог ![]() Цитата D_KEY @ В моем случае мы явно указываем значение по умолчанию и это видно и клиентам и читателям кода, а так же всяким тулзам для генерации документации. Плохо ли? Хорошо. Я разве говорил про плохо? Хорошо! Только то, что у тебя хорошо не делает плохо в js К тому же это умолчание ничего не говорит о том, что где-то дальше ты на нем завязал логику "Да, по умолчанию null - и что?" спросит читатель твоего кода, и полезет либо в комментарии, либо в код. Что изменилось?Цитата D_KEY @ Кроме того, я по-прежнему не смогу вызывать эту функцию с двумя переменными - опять же контроль ошибок. Плохо? Конечно плохо - гибкость меньше Добавлено Цитата Мяут-Настоящий @ У меня из-за другого не собирается ![]() Да у тебя когда индексы складывались вместо параметров ты не при чем был Добавлено Цитата D_KEY @ Кроме того, я по-прежнему не смогу вызывать эту функцию с двумя переменными - опять же контроль ошибок. Плохо? D_KEY, я тебе повторяю основную мысль - если ты считаешь, что ТЕБЕ в коде нужна прибитая гвоздями проверка на уровне вызова функции, то подход js ДЛЯ ТЕБЯ - плох. Плох не потому что плох, а потому что ТЕБЕ не подходит. Справедливо и в обратную сторону. То есть пока что разговор идет о вкусовщине в чистом виде, а не о каких-то объективных недостатках - ты ж пока не привел ни одного примера, когда js-стайл реально непроходимо мешает жить И не приведешь - был бы где-то клин уже давно б об этом все вопили Добавлено Все, пойду спать. D_KEY, хочешь патрончиков подкину? В js область видимости - функция. Не блок, не что-то еще, а только и исключительно функция. То есть:![]() ![]() var i; for(i=0; i<10; i++) {;} alert(i); // выведет 10 Вот где поплеваться-то можно, а ты все к переменным пристаешь Добавлено Если что - при ![]() ![]() for(var i=0; i<10; i++) {;} alert(i); все точно так же |
|
Сообщ.
#456
,
|
|
|
|
Цитата Астарот @ то есть почти полный аналог ![]() Только без извращений и со всеми плюшками проверок. Цитата "Да, по умолчанию null - и что?" спросит читатель твоего кода, и полезет либо в комментарии, либо в код. Что изменилось? Зачем ему куда-то лезть? Параметр фактически обозначен как необязательный. А какое в этом случае возьмет значение функция в своей реализации, вызывающий код уже не касается. Цитата Цитата D_KEY @ Кроме того, я по-прежнему не смогу вызывать эту функцию с двумя переменными - опять же контроль ошибок. Плохо? Конечно плохо - гибкость меньше Гибкости ровно столько же. Зачем тебе отправять в функцию больше аргументов, чем она готова принять? Цитата Справедливо и в обратную сторону. То есть пока что разговор идет о вкусовщине в чистом виде, а не о каких-то объективных недостатках Ты хочешь серьезного подробного разговора о типизации? Я пытаюсь поговрить на "простом" уровне, без умных слов и пр. фигни. Так вот твой подход более узок и он полностью реализуем в моем, а вот обратное неверно. Цитата ты ж пока не привел ни одного примера, когда js-стайл реально непроходимо мешает жить И не приведешь - был бы где-то клин уже давно б об этом все вопили Если для человека является нормальным даже вызов функции с числом параметров, большим, чем она хочет и готова принять, то мне крайне трудно найти точку опоры, аксиомы так сказать, для начала спора с ним. Цитата Вот где поплеваться-то можно, а ты все к переменным пристаешь Неужели фекальность и этого аспекта вызывает у тебя сомнения? Погоди, и до этого дойдем. |
|
Сообщ.
#457
,
|
|
|
|
По-тебе гораздо прикольнее как в WinAPI, когда последним параметром передается DWORD dwReserved, куда уже 10 лет от версии к версии МСДН настоятельно рекомендует передавать 0? |
|
Сообщ.
#458
,
|
|
|
|
ну не реализовано "значение по умолчанию"... без разницы по какой причине... но это не причина называть язык "богоморзким"...
Зато в других языках я не смогу написать ![]() ![]() var myobject = { prop: { prop1: 'property' }, method : function(a) { this.prop.prop1 = a; } } |
|
Сообщ.
#459
,
|
|
|
|
Цитата fatalist @ Зато в других языках я не смогу написать И зачем это нужно? |
|
Сообщ.
#460
,
|
|
|
|
Цитата Мяут-Настоящий @ Затем, чтобы не городить классы, а прямо в процессе создать необходимый единственный экземпляр кастомного объекта... И зачем это нужно? |
|
Сообщ.
#461
,
|
|
|
|
У меня есть стойкое ощущение, что большая часть сторонников недостатков имеет смутное представление о том, для чего именно применяется js
Отсюда и стремление притянуть за уши фичи к недостаткам. |
|
Сообщ.
#462
,
|
|
|
|
Цитата fatalist @ Ну вот например http://msdn.microsoft.com/en-us/library/bb397696.aspx Зато в других языках я не смогу написать |
|
Сообщ.
#463
,
|
|
|
|
Цитата SPM @ например например, метод класса ты туда не засунешь |
|
Сообщ.
#464
,
|
|
|
|
так:
![]() ![]() var x = new { m = (Action)delegate() { MessageBox.Show("12"); } }; ? |
|
Сообщ.
#465
,
|
|
|
|
О, значит в C# не забыли про эту фичу, это плюс ему
Еще примеры? |