<body>
<div id="block">
...
<div class="section" id="section-%number%">
</div>
...
</div>
</body>
var makingColumsInterval = setTimeout(function rekurs(){
if(randNumbersArray.length === columQty){
clearTimeout(makingColumsInterval);
}
var randomNum = getRandomNum(1, columQty);
if(randNumbersArray.indexOf(randomNum) === -1) {
randNumbersArray.push(randomNum);
outputNumbers("section-" + randNumbersArray[randNumbersArray.length - 1]);
}
var makingColumsInterval = (rekurs(),100);
},100);
if(randNumbersArray.length === columQty){
clearTimeout(makingColumsInterval);
}
makingColumnsInterval = setInterval(function (){
if(randNumbersArray.length === columQty){
clearInterval(makingColumnsInterval);
return;
}
var randomNum = getRandomNum(1, columQty);
if(randNumbersArray.indexOf(randomNum) === -1) {
randNumbersArray.push(randomNum);
outputNumbers("section-" + randNumbersArray[randNumbersArray.length - 1]);
}
}, 100);
el.addEventListener('click', handler, false);
el.addEventListener('click', handler, true);
el.removeEventListener('click', handler);
el.removeEventListener('click', handler);
el.removeEventListener('click', handler, false);
el.removeEventListener('click', handler, true);
obj = { 'key': [ 1, 2, 3, 4, 5 ], 0: 'somevalue', 1: 564}
keys = Object.keys(obj)
for (var i = 0, l1 = keys.length; i < l1; i++) {
if ( isNaN(parseInt(keys[i])) ) {
for (var j = 0, arr = obj[keys[i]], l2 = arr.length; j < l2; j++) {
console.log(arr[j]);
}
}
}
function on(arg, function_to_apply) {
if (Array.ifArray(arg)) {
for (i = 0; i < arg.length; i++ ) {
function_to_apply( arg[i] );
}
} else {
function_to_apply( arg );
}
}
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
</html>
Вообще смотря на ваш код, я вижу почему мы с вами не сходимся во мнениях. Вы абсолютно для каждого действия выбираете более лаконичный код, чем более производительный: если нужно вызвать Array.prototype.slice, вы создаете для этого новый массив; для того чтоб выбрать нужные элементы, вы пользуетесь querySelectorAll, вместо того чтоб сначала выбрать контекст, а потом запустить поиск ...
Если переписать ваш пример, прирост производительности будет ~0-20%. А если переделать его, чтобы массив был разреженным, тогда ваш вариант будет работать в ~30% медленнее. В целом, это все конечно мелочи и большого внимания они не заслуживают, особенно при учете что эта ваша функция выполняется onhashchange и onload, и особенно производительной ее можно не делать. Но все же - если мы имеем возможность упростить код, сделав его менее лаконичным, но более производительным, разве это не стоило бы сделать?