|
|
|
Динамически загружаемый скрипт. Что происходит?
|
|||
|---|---|---|---|
|
#18+
Вопрос чисто теоретический. Пусть я загружаю динамически определенный скрипт. Он в свою очередь загружает другой скрипт. И т.д. В своем роде рекурсия. Пусть все эти скрипты содержат функцию с одним названием например f. Вопрос: Каждая последующая функция f будет переопределять предыдущую или будет самостоятельной. Сразу оговорюсь я новичок в JavaScript. Вопрос зачем это надо тоже не уместен. Просто теоретическое измышление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 15:17 |
|
||
|
Динамически загружаемый скрипт. Что происходит?
|
|||
|---|---|---|---|
|
#18+
Вообще, это глупо и не корректно. Это, скорее, всего просто не будет работать. Потому как выводя динамически ваши функции, Вы создаете тело документа. А последующий вызов функции с именем f.... Крикеите громко на базаре любое имя... Сколько вы увидите глаз одновременно. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 15:27 |
|
||
|
Динамически загружаемый скрипт. Что происходит?
|
|||
|---|---|---|---|
|
#18+
Да нет. Работает. Просто вопрос заключается в том, что если я могу динамически подгружать скрипты,я хочу знать что происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 15:30 |
|
||
|
Динамически загружаемый скрипт. Что происходит?
|
|||
|---|---|---|---|
|
#18+
f - это не только имя функции, это ещё и название переменной, содержащей ссылку на функцию. Задав новое значение переменной на любом этапе ты затираешь её старое значение, это очевидно. function f() { alert(1); } f = function() { alert(2); } f(); ---> 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 15:49 |
|
||
|
Динамически загружаемый скрипт. Что происходит?
|
|||
|---|---|---|---|
|
#18+
зыf - это не только имя функции, это ещё и название переменной, содержащей ссылку на функцию. Задав новое значение переменной на любом этапе ты затираешь её старое значение, это очевидно. function f() { alert(1); } f = function() { alert(2); } f(); ---> 2 Отлично предскажи результат function f() { alert(1); } document.onmousedown = f; f = function() { alert(2); } f(); Что появится после нажатия мыши? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 15:57 |
|
||
|
Динамически загружаемый скрипт. Что происходит?
|
|||
|---|---|---|---|
|
#18+
sandreynik Отлично предскажи результат function f() { alert(1); } document.onmousedown = f; f = function() { alert(2); } f(); Что появится после нажатия мыши? так, загни свою предсказалку обратно, ок? я тебе отвечал на конкретный вопрос: sandreynikКаждая последующая функция f будет переопределять предыдущую или будет самостоятельной. зыЗадав новое значение переменной на любом этапе ты затираешь её старое значение, это очевидно. Если ты куда-то копировал предыдущее значение, то сам подумай, что будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 17:18 |
|
||
|
Динамически загружаемый скрипт. Что происходит?
|
|||
|---|---|---|---|
|
#18+
Хорошо Почему в первом варианте по нажатию мыши выскочит 1. А во втором 2. Вроде должно в обоих вариантах затереть старое значение 1 вариант function f() { alert(1); } document.onmousedown = f; f = function() { alert(2); } f(); 2 вариант function f() { alert(1); } document.onmousedown = f; function f() { alert(2); } f(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2008, 16:20 |
|
||
|
Динамически загружаемый скрипт. Что происходит?
|
|||
|---|---|---|---|
|
#18+
ключевое слово - копия. Ты копируешь значение переменной если у тебя будет var i = 0; var j = i; i = 1; j ведь в этом случае не примет значение 1, правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2008, 16:24 |
|
||
|
Динамически загружаемый скрипт. Что происходит?
|
|||
|---|---|---|---|
|
#18+
Все верно. не примет. Но получается что во втором случае когда я переопределяю функцию она также переопределяет все копии. Так что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2008, 16:34 |
|
||
|
Динамически загружаемый скрипт. Что происходит?
|
|||
|---|---|---|---|
|
#18+
Я почему хочу узнать механизм. Допустим я динамически загружаю чужой скрипт. Если в нем существует одноименная функция с уже существующей, то она переопределит все предыдущии функции. А это уже бардак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2008, 16:46 |
|
||
|
Динамически загружаемый скрипт. Что происходит?
|
|||
|---|---|---|---|
|
#18+
так, понял тебя, действительно переопределяет глобально... хм.. сейчас подумаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2008, 17:40 |
|
||
|
Динамически загружаемый скрипт. Что происходит?
|
|||
|---|---|---|---|
|
#18+
мда, действительно, вопреки логике переопределяет функцию глобально. в общем чтобы такое не происходило, я предпочитаю инкапсулировать функции в замыкания и объекты, чтобы было как можно меньше коллизий имен, например: var foo = (function() { var a = 1; function helper() { alert(a); } return { bar: function() { helper(); } } })(); foo.bar(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2008, 17:46 |
|
||
|
|

start [/forum/topic.php?fid=22&fpage=345&tid=1456883]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 408ms |

| 0 / 0 |
