JS и его "недостатки"
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.123] |
|
|
Правила раздела:
| Страницы: (66) « Первая ... 15 16 [17] 18 19 ... 65 66 ( Перейти к последнему сообщению ) |
JS и его "недостатки"
|
Сообщ.
#241
,
|
|
|
|
Ну да, но это не всегда то, что нужно (как например в случае со строками и коллекциями) |
|
Сообщ.
#242
,
|
|
|
|
Цитата korvin @ Ну да, но это не всегда то, что нужно (как например в случае со строками и коллекциями) Бесспорно. Я просто о том, что это тема отлична от == и === в джаваскрипте. |
|
Сообщ.
#243
,
|
|
|
|
Это был питон. Такой же динамический язык. Более того, в нем даже var нет. Цитата Да во всех ситуациях, когда это не объект, это не является ошибкой, поскольку я в любом месте могу присвоить любое значение... Так про присваивание речи не идет Это уже совсем другая ситуация.В том же питоне, ты в любом месте можешь присвоить переменной любое значение. Добавлено Цитата Астарот @ Ошибкой эту "ошибку" пока считаешь только ты - те, кто имеют с этой "ошибкой" дело каждый день ее таковой не считают. В таком случае, я в очередной раз прошу пример кода, где использование неизвестной переменной не является ошибкой. Под "ошибкой" я имею в виду не свое личное мнение, а отклонение от предполагаемой логики работы кода. |
|
Сообщ.
#244
,
|
|
|
|
Цитата MyNameIsIgor @ Бесспорно. Я просто о том, что это тема отлична от == и === в джаваскрипте. Она отлична в конкретике реализаций этих операций, но фактически мы также имеем два разных по внутреннему смыслу метода сравнения эквивалентности объектов =) Но это все детские шалости по сравнению с CL, где таких методов аж четыре =)) |
|
Сообщ.
#245
,
|
|
|
|
Цитата D_KEY @ ну напримерВ таком случае, я в очередной раз прошу пример кода, где использование неизвестной переменной не является ошибкой. Под "ошибкой" я имею в виду не свое личное мнение, а отклонение от предполагаемой логики работы кода. ![]() ![]() element.onclick = function(e) { var evt = e || event; } |
|
Сообщ.
#246
,
|
|
|
|
Цитата D_KEY @ В таком случае, я в очередной раз прошу пример кода, где использование неизвестной переменной не является ошибкой. Под "ошибкой" я имею в виду не свое личное мнение, а отклонение от предполагаемой логики работы кода. Блин, я даже уже не знаю Как насчет так:![]() ![]() if ( a == 'undefined') { return addError(' Ошибка: при использовании метода method необходимо задать входной параметр '); } Считай используем указанную особенность. пойдет? |
|
Сообщ.
#247
,
|
|
|
|
Цитата fatalist @ ну например ![]() ![]() element.onclick = function(e) { var evt = e || event; } Поясни, плиз, зачем так делать и как это будет интерпретироваться в случае undefined. Добавлено Цитата Астарот @ Считай используем указанную особенность. пойдет? Ээ, по-моему ты здесь не возможность эту используешь, а как раз наоборот, предотвращаешь последствия такой возможности. Нет? |
|
Сообщ.
#248
,
|
|
|
|
Цитата D_KEY @ У некоторых браузеров есть глобальный event, а некоторые передают его в функцию обработчик...Поясни, плиз, зачем так делать и как будет интерпретироваться. а нам он нужен в любом случае, вот и смотрим, если есть одно, то берем, если нет, берем другое... |
|
Сообщ.
#249
,
|
|
|
|
Цитата D_KEY @ Поясни, плиз, зачем так делать и как будет интерпретироваться. В js в обработчик события передается "объект event" который содержит дофига информации о произошедшем событии. Но в ie пошли своим путем - там в обработчик нифига не передается, за то есть глобальный объект event Ну. вот этот код и разруливает такое противоречие между браузерами. |
|
Сообщ.
#250
,
|
|
|
|
По поводу кроссбраузерности есть вообще несметное количество разных свойств разных объектов, которые отличаются в разных браузерах... и данная конструкция самая простая...
|
|
Сообщ.
#251
,
|
|
|
|
D_KEY подвис что ли от такой фигни?
|
|
Сообщ.
#252
,
|
|
|
|
Цитата Астарот @ оффлайн... пережевывает пока видимо D_KEY подвис что ли от такой фигни? Добавлено В прикол по php, угадайте, что выведет данный код (кто знает, не подсказывать ):![]() ![]() //никаких define('SOMEVAR'); выше нету echo SOMEVAR; |
|
Сообщ.
#253
,
|
|
|
|
Цитата fatalist @ Цитата D_KEY @ ну напримерВ таком случае, я в очередной раз прошу пример кода, где использование неизвестной переменной не является ошибкой. Под "ошибкой" я имею в виду не свое личное мнение, а отклонение от предполагаемой логики работы кода. ![]() ![]() element.onclick = function(e) { var evt = e || event; } Pythonic-way: ![]() ![]() if 'event' in globals(): e = event; Для объектов так: ![]() ![]() if 'event' in dir(o): e = o.event; |
|
Сообщ.
#254
,
|
|
|
|
Цитата Мяут-Настоящий @ и чито из этого должно следовать? что нам для этого нужны какие-то дополнительные методы? Pythonic-way: |
|
Сообщ.
#255
,
|
|
|
|
fatalist, главное отличие Pythonic-way, что возможны два состояния: либо мы явно проверяем наличие той или иной переменной в области видимости либо явно получаем исключение при тестировании. В случае же с undefined возможны неочевидные ситуации, которые могут приводить к ошибкам в последствии.
|