
Мы сорвали этот цветок с куста, чтобы сделать это фото. Улитка была большая, тропическая, цветок - цветок штата... Потом оказалось, что цветок изрядно поеден. Приятного аппетита!

На дороге обратно, по дороге из Орегона, я, желая этот привкус чем-то заесть, включил на том же компакт-диске Гоголя, "Вий". View, по нашему. Это же совсем другое дело! Это солнечный такой, красочный, сочный текст, даже рассказывая про розги, бурсу и голодных бурсаков, текст тем не менее сочный и вкусный. И ничто так не вкусно, как мечты голодранцев об обеде. Слюнки текли так, что пришлось заехать в придорожный "Red Robin" и съесть гамбургер. Тут я и понял разницу между русью Киевской и Московской. Я за Киевскую. В ней больше солнца, больше жизни, больше любви к ней. В ней хотя бы иногда есть что пожрать.
Каюсь, около года назад, купил себе вот эту штуку. То есть сначала я заказал попробовать, думая что верну обратно. Покупая в Амазоне, можно вернуть с возвратом полной стоимости. Но оказалось так удобно смотреть иногда вечером кино никому не мешая! Это конечно сибаритство и трата денег. И еще большее сибаритство то, что я ввернул в спальне в стенку держатели, на которые можно вешать гамак и отдыхать после работы. Так вот, эти очки оказались идеальны для просмотра фильма лежа в гамаке.for(var i=0; i<a.length; i++){ var e=a[i]; do_something_with(e); }
for(var i in a){ var e=a[i]; do_something_with(e); }
Хотя второй выглядит короче, первый считается быстрее. Если мы возьмем ассоциативный массив, то первый метод неприменим, а второй продолжает работать.function array_wrap(a){
return {
a: a,
fill: function(n, f){
for(var i=0; i<n; i++) this.a.push(f(i));
return this;
},
foreach: function(f){
for(var i=0; i<this.a.length; i++){ var e=this.a[i]; f(i,e); }
return this;
}
}
}
array_wrap([])
.fill(10, function(i){ return function(){ document.write(i); } } )
.foreach( function(i, e){ e(); } );
Результат: "0123456789".array_wrap([])
.fill(10, (i)=>( () => { document.write(i); } ))
.foreach( (i,e) => { e(); } );
var found={};
database.iterate_records(
function(record){ found[record.phone]=record.name; }
);
var a=[];
for(var i=0; i<10; i++) a.push(function(){ document.write(i); });
for(var i=0; i<10; i++) a[i]();
Запускаем, получаем: "0123456789". Что и требовалось, так? Ship it!var a=[];
for(var i=0; i<10; i++) a.push(function(){ document.write(i); });
for(var j=0; j<10; j++) a[j]();
Что ожидаем? То же самое. Что получаем? "10101010101010101010". Как это?var a=[];
for(var i=0; i<10; i++) a.push(function(){ document.write(i+' '); });
for(var j=0; j<10; j++) a[j]();
Получаем: "10 10 10 10 10 10 10 10 10 10 ". Не помогает.var a=[];
for(var i=0; i<10; i++){ var ii=i; a.push(function(){ document.write(ii); }); }
for(var j=0; j<10; j++) a[j]();
Получаем "9999999999". Как это?var a=[];
for(var i=0; i<10; i++) a.push(
function(i){ return function(){ document.write(i); }} (i)
);
for(var j=0; j<10; j++) a[j]();
Получаем "0123456789". Ура! Заработало. Теперь не забыть писать такое везде, где есть замыкание. Здорово, правда?var a=[];
for(var i=0; i<10; i++) a.push(
function(a){ return function(){ document.write(a); }} (i)
);
for(var j=0; j<10; j++) a[j]();
Здесь мы определяем функцию и тут же ее вызываем: function(a){...}(i)


