Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Шифрование по квадрату Полибия (https://javascript.ru/forum/misc/28236-shifrovanie-po-kvadratu-polibiya.html)

bes 12.05.2012 16:09

Цитата:

Сообщение от nerv_
что мешает самому проверить?

Да как-то сразу и не сообразил, что это можно проверить, хотелось узнать от опытных людей как лучше использовать циклы c var i или просто с i.

Если так как я подумал, то все циклы всех запускаемых функций, в которых используется счётчик i, будут использовать эту переменную.
Поэтому наверное имеет смысл объявить i как глобальную (или совсем её не объявлять, раз уж всё равно сама создаётся), а в условиях циклов не использовать выражение var i (и не использовать i для других целей, так как её значение будет зависеть от последнего исполненного цикла).
Попробую проверить.


Цитата:

Сообщение от nerv_
лучше создавать таблицу целиком (строкой) и затем ее парсить (innerHTML)

Попробую, чем лучше-то, то что без createElement и appendChild

bes 12.05.2012 16:32

nerv_, посмотрите функцию createTable2(), это вы имели в виду?

nerv_ 12.05.2012 16:52

Цитата:

Сообщение от bes
nerv_, посмотрите функцию createTable2(), это вы имели в виду?

почти. Зачем конкатенацию так часто производить?
Array.push()
Array.join()
Цитата:

Сообщение от bes
Если так как я подумал, то все циклы всех запускаемых функций, в которых используется счётчик i, будут использовать эту переменную.
Поэтому наверное имеет смысл объявить i как глобальную (или совсем её не объявлять, раз уж всё равно сама создаётся), а в условиях циклов не использовать выражение var i (и не использовать i для других целей, так как её значение будет зависеть от последнего исполненного цикла).
Попробую проверить.

Глобальные переменные надо создавать только тогда, когда это действительно необходимо.

bes 12.05.2012 17:11

Цитата:

Сообщение от nerv_
Глобальные переменные надо создавать только тогда, когда это действительно необходимо.

То есть в циклах всегда желательно использовать var i ?

nerv_ 12.05.2012 17:35

Мое мнение заключается в том, что переменные надо объявлять всегда. Предпочитаю делать это в начале функции.
Кстати, однобуквенные переменные не есть гуд. Имена переменных должны говорить сами за себя

bes 12.05.2012 18:24

Цитата:

Сообщение от nerv_
Мое мнение заключается в том, что переменные надо объявлять всегда. Предпочитаю делать это в начале функции.

Я предпочитаю объявлять переменные ближе к смысловым блокам, в которых они используются, если используются во многих блоках, то также вначале.

Цитата:

Сообщение от nerv_
Кстати, однобуквенные переменные не есть гуд. Имена переменных должны говорить сами за себя

Не спорю, что-то желательно назвать со смыслом, а где-то проще понять фразу если использовать короткое имя (которое, кстати, при желании можно закомментировать).
Как, например, назвать переменную k в функции createTable (увеличительНаКоличествоС олбцов что ли, не очень-то понятное выражение получится из таких имён).


Проверка показала, что я правильно думал, то есть во всех циклах используется одна и та же переменная i, то есть B@rmaley.e><e был неправ, что в коде создаётся много глобальных переменных.
Тут вопрос спорный получается использовать или не использовать var i в циклах: для порядка, конечно, чтобы не висела эта i в памяти, надо использовать var i, а в принципе, если уверен, что нигде эту i больше использовать не будешь, можно и без var.


nerv_, не очень понял что нужно сделать в вашем способе, используя push() и join(): перевести строку в массив что ли, а потом каким-то образом вклинить туда <tr><td> и </tr><td>.

B@rmaley.e><e 12.05.2012 18:55

Цитата:

Сообщение от bes
B@rmaley.e><e был неправ, что в коде создаётся много глобальных переменных

tr, i, j, td в довесок к уже существующим — этого мало?
Их вообще ни одной не должно быть.

bes 12.05.2012 19:09

Цитата:

Сообщение от B@rmaley.e><e
tr, i, j, td в довесок к уже существующим — этого мало?

Теперь понятно сколько для вас много.

Цитата:

Сообщение от B@rmaley.e><e
Их вообще ни одной не должно быть.

Как тогда решать, например, с такими как alphabet, rows, cols, которые используются во многих функциях??

nerv_ 12.05.2012 19:11

Цитата:

Сообщение от bes
B@rmaley.e><e был неправ

На моей памяти такого не было :)
Цитата:

Сообщение от bes
Как, например, назвать переменную k в функции createTable (увеличительНаКоличествоС олбцов что ли, не очень-то понятное выражение получится из таких имён).

Это твоя проблема, что ты не можешь придумать хорошие имена. Не вникая в суть - stepСolumn
Цитата:

Сообщение от B@rmaley.e><e
nerv_, не очень понял что нужно сделать в вашем способе, используя push() и join(): перевести строку в массив что ли, а потом каким-то образом вклинить туда <tr><td> и </tr><td>.

snake - первая функция в листинге. Я не утверждаю, что являюсь образцовым кодером, но на этот счет, как мне кажется, прав.

B@rmaley.e><e 12.05.2012 20:18

Цитата:

Сообщение от bes
Как тогда решать, например, с такими как alphabet, rows, cols, которые используются во многих функциях??

Замыкания.


Часовой пояс GMT +3, время: 05:24.