var i = 10;
var array = [];
while (i--) {
array.push(function() {
return i + i;
});
}
array.forEach(item => console.log(item())); // 10 раз напечатается -2
// после выхода из цикла i = -1; И так как i является "глобальной", то все функции будут "ссылаться" на одно и тоже значение после цикла
// array[function() { return i + i; }, function() { return i + i }, function() { return i + i }, ...]
// ==> array[function() { return -1 + -1 }, function() { return -2 }, ...]
// ==> array[0]() ==> return -2;
// ------------------------------------------------------
// Проблему можно решить так:
var i = 10;
var array = [];
while (i--) {
array.push((function(i) {
// Сохранить i в замыкании
return function() {
return i + i;
}
})(i));
}
array.forEach(item => console.log(item())); // 18 16 14 12 10 8 6 4 2 0
// ------------------------------------------------------
// Или так
var i = 10;
var array = [];
while (i--) {
let value = i;
array.push(function() {
return value + value;
});
}
array.forEach(item => console.log(item())); // 18 16 14 12 10 8 6 4 2 0
preg_match_all('/<img id="productMainImage" src="(.+\.jpeg)"/i', $file, $arrIP);
<?php
$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3);
print_r($matches);
?>
VAR
x,y,a,b,c,d:real;
begin
writeln('Здравствуйте, вас приветствует калькулятор К-В. Можно использовать целые числа и десятичные дроби. Когда вы закончите работу, то просто закройте программу');
while true do
begin
writeln('Чтобы вычислить корень или квадрат числа сначала введите число, потом нажмите 0');
writeln('Введите первую часть выражения: первое слагаемое, уменьшаемое, первый множитель или числитель');
readln(x);
writeln('Введите вторую часть выражения: второе слагаемое, вычитаемое, второй множитель или заменатель');
readln(y);
if y=0 then
begin
a:=SQR(x);
b:=SQRT(x);
writeln('Квадрат числа ',a);
writeln('Корень числа ',b);
end
else
begin
a:=x+y;
b:=x-y;
c:=x*y;
d:=x/y;
writeln('Сумма ',a);
writeln('Вычитание ',b);
writeln('Умножение ',c);
writeln('Деление ',d);
end;
writeln('Спасибо за использование калькулятора К-В');
end;
end.