func
в вашем первом варианте «не знает» что у переменной array
есть какое-то там значение. Ведь её, функцию эту, объявили раньше и выше )array
известен на момент, когда заряжают таймер.function myFunc(arr, func) {
arr.forEach( ( ) => {
setTimeout(
func.bind(null, arr), // привязываем к функции аргумент
1000
)
})
}
myFunc([1, 2, 3, 4], (a) => {
console.log("print array after each 1 second", a);
});
jQuery.on()
регистрирует слушателя события клика. В функцию myFunc
при клике передастся аргумент – событие клика.var myEvent = {
target: document.getElementById('button_id'),
// ... ещё куча стандартных свойств
};
myFunc(myEvent);
"Hello!".replace(/(.(?!$))/g,'$1-')
(?!$)
) – заменяется на себя $1
и дефис. eval(code)
на console.log(code)
var
.var tempScrollTop
, currentScrollTop = 0
;
tempScrollTop
остаётся неинициализированной, её значение undefined
, а во 2-м варианте ей даётся начальное значение 0
. function sum2d(arr) {
var row, col, sum = arr[0].slice();
for( row = 1; row < arr.length; row++) {
for( col = 0; col < sum.length; col++) {
sum[col] += arr[row][col];
}
}
return sum;
}
sum2d([
[1,2,3],
[8,9,0],
])
// [9,11,3]
function* rnd(n) {
var nums = [], i, randomIndex, itemAtIndex;
for( i=0; i<n; nums.push(i++));
for( i=n-1; i>=0; i--) {
randomIndex = Math.floor(Math.random()*(i+1));
itemAtIndex = nums[randomIndex];
nums[randomIndex] = nums[i];
nums[i] = itemAtIndex;
}
i = n - 1
while(i >= 0)
yield nums[i--];
}
var gen = rnd(10);
while(true) {
var v = gen.next();
if( v.done) break;
console.log(v.value);
}
console.log('Done!');
Array.apply(null, {length: 10}).map(function(){console.log(1+arguments[1])})
Тут создаётся пустой массив из 10 элементов, которым задано значение undefined
, и для каждого вызывается функция, выводящая индекс элемента, увеличенный на 1, чтобы не 0..9
, а 1..10
.(function f(){
console.log(arguments[0]);
if( arguments[0]<10) f(arguments[0]+1);
})(1)
Но тут уже сама функция вроде как переменная. test
переменные a, b, c
– совсем не те же, что снаружи. Называются одинаково, это сбивает с толку, но означают разное. function replaceStars(collection) {
var i, el, re = /^(\s*\*\s*){3}$/;
for(i = 0; i<collection.length; i++) {
el = collection[i];
if( el.innerHTML.match(re)) {
el.insertAdjacentHTML('afterend', '<hr>');
el.parentNode.removeChild(el);
}
}
}
replaceStars(document.querySelectorAll('.entry-content p'));
attachments
.type == 'photo'
, рисовать картинку.function drawNews(news){
var html = ('');
for(var i = 1; i < news.length; i++){
var n = news[i];
n.date = new Date(n.date * 1000);
var images = [], tmpl = '<img src="%SRC%" alt="">';
if( n.attachments) {
for( var j=0; j<n.attachments.length; j++) {
if(n.attachments[j].type !== 'photo') continue;
images.push(
tmpl.replace('%SRC%', n.attachments[j].photo.photo_130)
);
}
}
html += '<div><div style="width:300px; height:auto;"><p>'+ n.text +'</p><p>'+ n.date.toString() +'</p></div>' + images.join('') + '</div>';
}
$('#news').html(html);
}