![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Сisa |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 18.1.2013 Репутация: нет Всего: нет |
Ошибку не показывает, значит так можно делать? |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
А почему нельзя? Просто перетираешь переменную.
|
|||
|
||||
| Сisa |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 18.1.2013 Репутация: нет Всего: нет |
Видимо js просто "прощает" подобный кодинг,
но не везде так:
Warning: Content-Type header not found in the script output. If this is not a CGI script, please use the Run -> Run in Command Prompt menu to run it. "my" variable $a masks earlier declaration in same scope at Untitled line 3. и это даже без use strict; scope - разное |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Ну вот объявил ты переменную, она уже где-то раньше была объявлена (возможно даже не в твоем коде и ты не в курсе или просто не помнишь), ты изменяешь ее значение и тот код для которого она была объявлена начинает неправильно работать. Твой код тоже работает неправильно из-за того, что значение переменной изменяет другой код, который имел в виду свою переменную. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
diadiavova, ну и кто в этом виноват? ЯП или программист? Чтобы такого не было придумали понятия неймспейсов, скоупа и замыканий.
|
|||
|
||||
| Сisa |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 18.1.2013 Репутация: нет Всего: нет |
Нет, ну все хорошо, и то что "прощает", и то что придумали разные понятия, и что перетираешь, и что тестировать надо не абы как, а с усердием. Просто сначала не заостряешь внимание на область видимости и т.п.
|
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Виноват однозначно язык программирования. Я, конечно, понимаю, что если придерживаться определенных правил, то можно избежать множества проблем. И вообще любые недостатки языка вполне можно компенсировать профессионализмом программиста, но, здесь ведь речь не об этом. Во-первых, никакие манипуляции не гарантируют, что проблема не возникнет вообще, а стало быть предложенное тобой решение - довольно кривой костыль. Во-вторых, любая фича, существующая в языке, какую бы потенциальную опасность она ни несла, обычно несет с собой и что-то полезное. Честно говоря, я не могу придумать ни одной ситуации, в которой из возможности повторного объявления переменной можно было бы извлечь хоть какую-то пользу. В этом смысле вообще непонятно для чего надо закладывать такие грабли в язык, ведь ошибки, которые могут от этого возникнуть - отловить довольно трудно, даже имея очень развитые средства отладки, а яваскрипт, насколько мне известно, похвастаться навороченными отладчиками не может. И при этом пользы фича вообще не несет никакой( если ты с этим не согласен, то не сочти за труд и приведи хоть один пример полезности такой фичи). Ну и в-третьих, если ты пишешь на этом языке много, то знаешь все его "темные стороны", в ином случае будешь судить о поведении кода, исходя из своих знаний, почерпнутых в других языках. А я что-то не припомню, чтобы еще в каких-то языках было что-то подобное. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |