Еще у меня из-за замыкания начинается паранойя:
proto = {
method: function (…) {
var a, b, c, d, …;
Object.keys(…).forEach(function (…) {
//к примеру, тут не нужны a, b, c, d
});
}
}
приходится выносить в отдельный метод:
proto = {
_method: function (…) {
//тут this → window
},
method: function (…) {
var a, b, c, d, …;
Object.keys(…).forEach(this._method);
}
}
но метод в прототипе, ничего не делающий с this, кажется лишним, выносим его в отдельный объект:
utils = {
method: function (…) {…}
}
proto = {
method: function (…) {
var a, b, c, d, …;
Object.keys(…).forEach(utils.method);
}
}
в итоге придется искать в коде, что же там за utils.method, который возможно состоит из пары строчек и самостоятельно не имеет смысла, появляется проблема с передачей дополнительных переменных. а можно было всего-лишь написать:
proto = {
method: function (…) {
var a, b, c, d, …, keys = Object.keys(…), i = keys.length;
while (i--) {
…
}
}
}
поэтому forEach использую, только когда действительно нужен локальный скоп, а еще в светлом будущем ожидается let |
proto = {
method: function (…) {
var a, b, c, d, …, keys = Object.keys(…), i = keys.length;
while (i--) {
//к примеру, тут не нужны a, b, c, d
}
}
}
И в чём разница? |
Ну так они никуда не замыкаются, паранойя не наступает :D
|
А что меняется от того, замыкаются они или не замыкаются? Не пойму, откуда паранойя растёт.
|
Да ничего страшного не происходит. Я понимаю, что разница будет заметна только в тестах, где 100500 раз одно и тоже повторяют, но просто зачем все эти лишние действия (создание функции, связь скопов, call, …) будут происходить, если используя while, их не будет.
|
я тоже сначала заморачивался по этому поводу, а потом перестал, когда сравнил скорость...
|
Цитата:
Цитата:
вот, float, это правильный подход при борьбе с паранойей, я считаю :) |
Цитата:
|
Цитата:
Но на следующем - возникает потребность не в совершенстве кода, а в новой функциональности. И маховик начинает раскручиваться заново: добавляем, например, раскраску строк в зависимости от значений, и оказывается, что простой алгоритм не способен решить эту задачу. |
Цитата:
|
| Часовой пояс GMT +3, время: 08:27. |