10.02.2010, 19:34
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
Кстати о практическом применении #12. Недавно спрашивали, почему здесь ничего не работает:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
jQuery.noConflict();
function $() {}
$(); // $ is not a function
</script>
Без понимания того, что функция $ будет создана раньше, чем выполнится jQuery.noConflict, найти ошибку было бы сложно.
|
|
10.02.2010, 19:38
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
Сообщение от Octane
|
ез понимания того, что функция $ будет создана раньше,
|
А это уже кстати ерунда. компилятор никогда не должен забегать на перед и создавать функции раньше их использования, в этом беда JS. Как сказал гозар у меня написано в подписи. А то что делает ECMA - пытается добавить интеллектуальности компилятору - его и губит.
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Последний раз редактировалось PeaceCoder, 10.02.2010 в 19:40.
|
|
10.02.2010, 19:41
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от PeaceCoder
|
компилятор никогда не должен забегать на перед и создавать функции раньше их использования, в этом беда JS.
|
Чушь.
|
|
10.02.2010, 19:44
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
Сообщение от Kolyaj
|
Чушь.
|
Это не чушь, а сотни набитых шишек на голове опытных программистов. Попробуйте в С++ создать функцию позже ее ипользования...
Изза этого кстати, eval и медленный, т.к. компилятор сначала пытается найти такие вот функции, а потом все остальное.
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
|
|
10.02.2010, 20:27
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от PeaceCoder
|
Попробуйте в С++ создать функцию позже ее ипользования...
|
Функции в C++ создаются на этапе компиляции, так что в любом случае до использования, не зависимо от места объявления.
Сообщение от PeaceCoder
|
компилятор сначала пытается найти такие вот функции, а потом все остальное.
|
Он в любом случае парсит весь скрипт сначала, eval тут не причем.
|
|
10.02.2010, 21:07
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Сообщение от PeaceCoder
|
Попробуйте в С++ создать функцию позже ее ипользования...
|
Да не вопрос, только прототип объявить.
|
|
10.02.2010, 21:24
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
Сообщение от B@rmaley.e><e
|
Да не вопрос, только прототип объявить.
|
Правильно. Это и есть обьявление функции, только без тела. тело подкрепляется потом. В обьявлении прототипа главное то, что нам уже есть куда ссылаться при компилации ее использования.
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
|
|
10.02.2010, 22:38
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от Octane
|
Кстати о практическом применении #12. Недавно спрашивали, почему здесь ничего не работает:
|
нет, он фактически проверяет, знаешь ли ты, можно ли "переопределить" функцию
Сообщение от Kolyaj
|
Он в любом случае парсит весь скрипт сначала, eval тут не причем.
|
ну я, думаю, объявление функций перед использованием ускоряет компиляцию. Это и было причиной такого правила. Вопрос в том, насколько далеко в прошлое PeaceCoder хочет вернуться
|
|
10.02.2010, 23:52
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от x-yuri
|
ну я, думаю, объявление функций перед использованием ускоряет компиляцию.
|
Каким образом? Как парсился весь скрипт до выполнения, так и парсится.
|
|
14.02.2010, 16:38
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Тест - просто спортивное состязание для себя, больше, конечно теоретический, но и на практике многое пригодится.
Здесь ещё дополнительные вопросы пишут: http://groups.google.ru/group/comp.l...170b5696?hl=en
|
|
|
|