Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Я не знаю, есть ли официальное название для такого поведения, но мне нравится использовать термин «поднятие»(«hoisting»).
function a() {
var x = 5;
return function() { return x; }
}
parent scope (как бы это на русском то сказать?)«Из уровня выше». На деле же в PHP из глобальной зоны видимости.
я имел в виду именно локальную зону видимости.В каком месте? Я уже запутался.
Бичь js — хавание (всех без разбору) видимых переменных замыканиями с последующими утечками памяти в php обходиться ну очень просто.Я не понимаю почему это бич JS. Объясните?
я имел в виду именно локальную зону видимости.Я понял о чём вы говорили — о синтаксисе анонимных функций в PHP 5.3, я думал совсем о другом.
Хотя только в php (имхо) правильно додумались еще добавить возможность указывать нужные импорты из parent scope (как бы это на русском то сказать?)Вы же про global $var пишете, нет? Я и уточнил кое-что про global $var.
function a(){
$somevar= 1;
$someotherVal = 'a very big string';
$closure = function (b) use($somevar){
return b($somevar)
}
return $closure;
}
a(function($v){echo($v))}Особо тяжко в JS это проявлятся в IE при общении с DOM.Это проблемы IE, а не JS.
local x будет виден в пределах блока, в котором объявлен.Там и сейчас не все как во внутреннем блоки
function b() {
a = 10;
return;
function a() {}
}
function b(){
var a = function(){}
a = 10;
return;
}
function b(){
function a(){}
a = 10;
return;
}
function b(){
var a = 1;
function a(){}
alert(a);
}
b() // 1
function b(){
var a = function(){}
a = 10;
return;
}
var x = 1,
bar,
baz = "something";
var x = 1;
var bar;
var baz = "something";
var вполне очевидно — сжатие javascript. Если вы хотите сжать минификатором свой скрипт до как можно меньших размеров — необходимо использовать один и только один var.var
x = 1,
bar,
baz = "something";
Область видимости в JavaScript и «поднятие» переменных и объявлений функций