Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 10.08.2008, 17:37
Интересующийся
Отправить личное сообщение для Бухалыч Посмотреть профиль Найти все сообщения от Бухалыч
 
Регистрация: 14.07.2008
Сообщений: 11

По поводу глобальных/локальных переменных:
Разве функция работает не быстрей, если обращается к локальным переменным?
Ответить с цитированием
  #12 (permalink)  
Старый 10.08.2008, 18:58
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Dmitry A. Soshnikov, innerHTML тоже не используете?

Сообщение от Dmitry A. Soshnikov
А теперь вы скажите, чем вам он угодил
Я его использую там, где он уместен.
Ответить с цитированием
  #13 (permalink)  
Старый 10.08.2008, 19:49
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Kolyaj, я что-то не пойму вашу позицию =)

Сообщение от Kolyaj
innerHTML тоже не используете?
использую; и хоть он не стандартизован W3C, innerHTML имеет меньше минусов (см. ссылки выше), чем document.write

Сообщение от Kolyaj
Я его использую там, где он уместен
объективно, я вижу только одно место - запись скрипта в документ, но это не касается обсуждаемого скрипта, поэтому ваша позиция весьма странная. Так что - давайте, - ради интереса - поменяемся местами - вы аргументированно доказывайте (естественно, с ссылками на официальные источники), а я послушаю про все "прелести" document.write (а также, все-таки, - что там за "натяжки", - ответ на которые вы игнорировали =).
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 10.08.2008 в 19:58. Причина: опечатка
Ответить с цитированием
  #14 (permalink)  
Старый 10.08.2008, 20:00
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Сообщение от Бухалыч Посмотреть сообщение
По поводу глобальных/локальных переменных:
Разве функция работает не быстрей, если обращается к локальным переменным?
Быстрее, в некоторых случаях.

В данном же случае приходится в функции каждый раз создавать огромный массив. Соответсвенно создать используемые данные всегда лучше 1 раз...

Не стоит также забывать, что джаваскрипт - интерпретируемый язык... Так что чем больше строк - тем медленнее работает...
Ответить с цитированием
  #15 (permalink)  
Старый 10.08.2008, 20:06
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

ZoNT,

Сообщение от ZoNT
Быстрее, в некоторых случаях.
Во всех случаях.

P.S.: а вот к вопросу о памяти (если функция выступает в качестве конструктора) - лучше, ествественно, хранить однотипные сущности в одном месте (как правило - в прототипе конструктора).
__________________
Тонкости ECMAScript
Ответить с цитированием
  #16 (permalink)  
Старый 10.08.2008, 20:08
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Сообщение от Dmitry A. Soshnikov Посмотреть сообщение
ZoNT,


Во всех случаях.
Код не видел - а уже утверждаешь...

Или ты хочешь, чтобы я тебе пример привёл с цифрами, а потом отнекиваться будешь???
Ответить с цитированием
  #17 (permalink)  
Старый 10.08.2008, 20:16
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от ZoNT
Код не видел - а уже утверждаешь...
почитай про scope-chain и как (в какой последовательности) производится поиск пропертей в нем (конкретный код тут не при чем)

Сообщение от ZoNT
Или ты хочешь, чтобы я тебе пример привёл с цифрами, а потом отнекиваться будешь???
ага, с удовольствием посмотрю, всегда интересно узнать что-то новое (только не "отнекиваться", а "принять правильную точку зрения, если она будет таковой" - но еще раз повторю - сначала стоит почитать 10.1.3 и 10.1.4)
__________________
Тонкости ECMAScript
Ответить с цитированием
  #18 (permalink)  
Старый 10.08.2008, 20:34
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 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>
Ответить с цитированием
  #19 (permalink)  
Старый 10.08.2008, 20:46
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 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
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 10.08.2008 в 20:49.
Ответить с цитированием
  #20 (permalink)  
Старый 10.08.2008, 21:09
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 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
а также, все-таки, - что там за "натяжки", - ответ на которые вы игнорировали
Прочитайте пост повнимательнее.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск