Учитывая этот код в JavaScript:Weird поведение закрытия в PHP
function getFunc(){
var myVar = 1;
function inc(var1) {
myVar = myVar + 1;
return var1 + myVar;
}
return inc;
}
var inc = getFunc();
console.log(inc(5));
console.log(inc(6));
Если запустить этот код в консоли браузера это дает 7 и 9 в качестве результата. Я написал один и тот же код на C# и он дал мне тот же результат:
static void Main(string[] args)
{
var inc = GetAFunc();
Console.WriteLine(inc(5));
Console.WriteLine(inc(6));
Console.ReadKey();
}
public static Func<int, int> GetAFunc()
{
var myVar = 1;
Func<int, int> inc = delegate(int var1)
{
myVar = myVar + 1;
return var1 + myVar;
};
return inc;
}
Но почему это не дает тот же результат в PHP?
function getFunc() {
$myVar = 1;
$inc = function($var1) use ($myVar) {
$myVar = $myVar + 1;
return $var1 + $myVar;
};
return $inc;
}
$inc = getFunc();
echo $inc(5);
echo $inc(6);
Это дало мне 7 и 8!
Почему они не работают одинаково? Что-то не так с кодом?
Я бы назвал это «неожиданное» вместо «странно ';) – moorscode
Хотя это интересный теоретический вопрос, я бы сказал, что ни один из ваших примеров не очень ясен в передаче намерений кода. – Sven