10.08.2008, 17:37
|
Интересующийся
|
|
Регистрация: 14.07.2008
Сообщений: 11
|
|
По поводу глобальных/локальных переменных:
Разве функция работает не быстрей, если обращается к локальным переменным?
|
|
10.08.2008, 18:58
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Dmitry A. Soshnikov, innerHTML тоже не используете?
Сообщение от Dmitry A. Soshnikov
|
А теперь вы скажите, чем вам он угодил
|
Я его использую там, где он уместен.
|
|
10.08.2008, 19:49
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Kolyaj, я что-то не пойму вашу позицию =)
Сообщение от Kolyaj
|
innerHTML тоже не используете?
|
использую; и хоть он не стандартизован W3C, innerHTML имеет меньше минусов (см. ссылки выше), чем document.write
Сообщение от Kolyaj
|
Я его использую там, где он уместен
|
объективно, я вижу только одно место - запись скрипта в документ, но это не касается обсуждаемого скрипта, поэтому ваша позиция весьма странная. Так что - давайте, - ради интереса - поменяемся местами - вы аргументированно доказывайте (естественно, с ссылками на официальные источники), а я послушаю про все "прелести" document.write (а также, все-таки, - что там за "натяжки", - ответ на которые вы игнорировали =).
Последний раз редактировалось Dmitry A. Soshnikov, 10.08.2008 в 19:58.
Причина: опечатка
|
|
10.08.2008, 20:00
|
Флудер
|
|
Регистрация: 25.07.2008
Сообщений: 1,271
|
|
Сообщение от Бухалыч
|
По поводу глобальных/локальных переменных:
Разве функция работает не быстрей, если обращается к локальным переменным?
|
Быстрее, в некоторых случаях.
В данном же случае приходится в функции каждый раз создавать огромный массив. Соответсвенно создать используемые данные всегда лучше 1 раз...
Не стоит также забывать, что джаваскрипт - интерпретируемый язык... Так что чем больше строк - тем медленнее работает...
|
|
10.08.2008, 20:06
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
ZoNT,
Сообщение от ZoNT
|
Быстрее, в некоторых случаях.
|
Во всех случаях.
P.S.: а вот к вопросу о памяти (если функция выступает в качестве конструктора) - лучше, ествественно, хранить однотипные сущности в одном месте (как правило - в прототипе конструктора).
|
|
10.08.2008, 20:08
|
Флудер
|
|
Регистрация: 25.07.2008
Сообщений: 1,271
|
|
Сообщение от Dmitry A. Soshnikov
|
ZoNT,
Во всех случаях.
|
Код не видел - а уже утверждаешь...
Или ты хочешь, чтобы я тебе пример привёл с цифрами, а потом отнекиваться будешь???
|
|
10.08.2008, 20:16
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Сообщение от ZoNT
|
Код не видел - а уже утверждаешь...
|
почитай про scope-chain и как (в какой последовательности) производится поиск пропертей в нем (конкретный код тут не при чем)
Сообщение от ZoNT
|
Или ты хочешь, чтобы я тебе пример привёл с цифрами, а потом отнекиваться будешь???
|
ага, с удовольствием посмотрю, всегда интересно узнать что-то новое (только не "отнекиваться", а "принять правильную точку зрения, если она будет таковой" - но еще раз повторю - сначала стоит почитать 10.1.3 и 10.1.4)
|
|
10.08.2008, 20:34
|
Флудер
|
|
Регистрация: 25.07.2008
Сообщений: 1,271
|
|
<html>
<body>
<script type="text/javascript">
// local var
function F1(){
var a = [];
for (var i=0;i<1000;i++) a.push(i);
var str = [];
for (var i=0;i<1000;i+=10) str.push(a[i]);
}
var start = new Date();
for (var i=0;i<1000;i++) F1();
var res1 = (new Date())-start;
//**********************************
// Global var
var arr = [];
for (var i=0;i<1000;i++) arr.push(i);
function F2(){
var str = [];
for (var i=0;i<1000;i+=10) str.push(arr[i]);
}
start = new Date();
for (var i=0;i<1000;i++) F2();
var res2 = (new Date())-start;
//**********************************
alert([res1,res2]);
</script>
</body>
</html>
|
|
10.08.2008, 20:46
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
ZoNT, ты утверждаешь яро что-то, пытаясь аргументировать практически, - это смело, я ценю, но, дружище, давай так - если приводишь практические примеры, то, пожалуйста, без мухлежа =) Твой опыт (если все по-честному относительно локальных/глобальных переменных) должен быть таким:
<html>
<body>
<script type="text/javascript">
// local var
function F1(){
var a = [];
for (var i=0;i<1000;i++) a.push(i);
var str = [];
for (var i=0;i<1000;i+=10) str.push(a[i]);
}
var start = new Date();
for (var i=0;i<1000;i++) F1();
var res1 = (new Date())-start;
//**********************************
// Global var
var arr = [];
var str = [];
function F2(){
for (var i=0;i<1000;i++) arr.push(i);
for (var i=0;i<1000;i+=10) str.push(arr[i]);
}
var start = new Date();
for (var i=0;i<1000;i++) F2();
var res2 = (new Date())-start;
//**********************************
alert([res1,res2]);
</script>
</body>
</html>
И тогда результаты соответсвуют теории. А вообще, повторю снова, сначала теория - 10.1.4 Scope Chain and Identifier Resolution
Последний раз редактировалось Dmitry A. Soshnikov, 10.08.2008 в 20:49.
|
|
10.08.2008, 21:09
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от Dmitry A. Soshnikov
|
использую; и хоть он не стандартизован W3C, innerHTML имеет меньше минусов (см. ссылки выше), чем document.write
|
По ссылкам выше innerHTML стоит в одном ряду с document.write, поэтому, если вы приводите их в пример, то вы бы не должны использовать ни то ни другое. И какие минусы есть у document.write, которых нет у innerHTML?
Сообщение от Dmitry A. Soshnikov
|
я вижу только одно место - запись скрипта в документ, но это не касается обсуждаемого скрипта, поэтому ваша позиция весьма странная.
|
Запись скрипта в документ как раз удобнее производить методами DOM. Мои слова к данному скрипту вообще не относятся, впрочем как и ваши
Сообщение от Dmitry A. Soshnikov
|
часто встречаются конструкции, которые на сегодняшний день лучше не использовать
|
Именно в отрицании этой категоричности и состоит моя позиция. Для каждой задачи оптимален свой инструмент. Данный скрипт я щас вообще не обсуждаю.
Самый яркий пример использования document.write -- вывод текста на страницу только при условии включенного JS.
Сообщение от Dmitry A. Soshnikov
|
а также, все-таки, - что там за "натяжки", - ответ на которые вы игнорировали
|
Прочитайте пост повнимательнее.
|
|
|
|