12.05.2012, 21:11
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от nerv_
|
Это твоя проблема, что ты не можешь придумать хорошие имена. Не вникая в суть - stepСolumn
|
В сложном выражении даже с такими именами будет сложно разобраться, для сложных выражений, на мой взгляд, лучше закомментировать переменные с короткими именами (ну это вопрос вкуса).
Сообщение от nerv_
|
snake - первая функция в листинге
|
В твоём примере используется один push в цикле, в моём придётся использовать три, то есть 3 push() vs 2 concat(), если concat намного более затратная операция по сравнению с push, тогда, конечно смысл есть, а если нет, то у меня получилось не сложнее (за сам способ спасибо).
Сообщение от B@rmaley.e><e
|
Замыкания.
|
Можете пояснить, не совсем понятно как замыкания могут заменить глобальные переменные.
|
|
12.05.2012, 21:27
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
(function(){
var localVariable = 5;
window.getLocalVar = function () { return localVariable; };
window.setLocalVar = function (val) { localVariable = val; };
})();
alert( typeof localVariable);
alert( getLocalVar() );
setLocalVar(10);
alert( getLocalVar() );
|
|
12.05.2012, 22:11
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
из этого кода следует, что ты прав Прикольное кино Даже если явно задать длину массива new Array(count) и при записи обращаться непосредственно к каждому элементу Array[index] ситуация почти аналогична. Вру )
var repeatCount = 100000;
var pattern = "text";
var arrayFixSize = new Array( repeatCount );
var startTime;
var counter;
var line = "";
var arr = [];
for( startTime = new Date(), counter = repeatCount; counter > 0; counter-- ) {
line += pattern;
}
alert(
'concatenate - ' + ( new Date() - startTime )
);
/*********************************************************/
for( startTime = new Date(), counter = repeatCount; counter > 0; counter-- ) {
arr.push( pattern );
}
arr.join( '' );
alert(
'array + push - ' + ( new Date() - startTime )
);
/*********************************************************/
for( startTime = new Date(), counter = repeatCount; counter > 0; counter-- ) {
arrayFixSize[ counter ] = pattern;
}
arrayFixSize.join( '' );
alert(
'array[ index ] - ' + ( new Date() - startTime )
);
Итог: во всех браузерах разное время, с точностью до наоборот
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Последний раз редактировалось nerv_, 12.05.2012 в 22:24.
|
|
12.05.2012, 22:15
|
Новичок на форуме
|
|
Регистрация: 19.04.2012
Сообщений: 8
|
|
bes, не пойму по какому принципу работает данная программа. она же должна присваивать букве определенное число, равное номеру ряда и столбца (первый ряд(1) и первый столбец(1) - буква а - 11), и выводить переведенный текст в другое окошко
|
|
12.05.2012, 22:28
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Получается что к глобальным переменным придётся обращаться не напрямую, а через get/set методы, наподобие того как в Delphi обращаются к полям через свойства, только без сохранения синтаксиса обращения.
И всё это, как я понимаю, из-за того что не обеспечена модульность (весь скрипт по каким бы он файлам не был разбросан воспринимается как единый модуль).
|
|
12.05.2012, 22:35
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от StelZ
|
bes, не пойму по какому принципу работает данная программа. она же должна присваивать букве определенное число, равное номеру ряда и столбца (первый ряд(1) и первый столбец(1) - буква а - 11), и выводить переведенный текст в другое окошко
|
Можно, конечно, и так сделать, то есть считать конечным шифром числа.
Я взял за основу описанный в википедии метод 2, когда получают координаты, затем к строке x-координат приписывают строку y-координат, а затем последовательно берут пары из строки, считают их координатами и переводят в буквы по той же таблице, то есть конечный шифр - слова.
|
|
12.05.2012, 22:48
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Сообщение от bes
|
Получается что к глобальным переменным придётся обращаться не напрямую, а через get/set методы, наподобие того как в Delphi обращаются к полям через свойства, только без сохранения синтаксиса обращения.
|
Нет, неправильно получается. get и set функции приведены для примера, вместо них можно было реализовать любые другие функции, работающие с нужной переменной.
|
|
12.05.2012, 22:56
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от B@rmaley.e><e
|
Нет, неправильно получается. get и set функции приведены для примера, вместо них можно было реализовать любые другие функции, работающие с нужной переменной.
|
Это понятно, речь-то шла о чтении/установке переменной, которая должна была заменить глобальную.
|
|
12.05.2012, 23:18
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
А Вам нигде из клиентского кода не нужно ею пользоваться.
|
|
12.05.2012, 23:24
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
nerv_, IE8 вообще подвисает на этом скрипте (потом отвисает выдавая результаты).
Хотя concat чаще выигрывает, изредка push немного опережает.
Сообщение от B@rmaley.e><e
|
А Вам нигде из клиентского кода не нужно ею пользоваться.
|
В смысле??
|
|
|
|