PHP:
function foo()
{
function bar()
{
echo 'inside';
}
}
foo();
bar(); // inside
В тоже время:
JS
function foo()
{
function bar()
{
cosole.log('inside');
}
}
foo();
bar(); // Uncaught ReferenceError: bar is not defined
И последний, самый интересный пример:
function foo()
{
$('#btn').click(function() {
bar();
});
function bar()
{
console.log('BAR');
}
}
foo();
bar(); // Uncaught ReferenceError: bar is not defined
/*
* Но по нажатию на кнопку коллбэк срабатывает, хоть и находится внутри foo(); Да и
* вызывает функцию bar(), которая тоже внутри foo();
*/
В чем разница в областях видимости в этих языках, объясните пожалуйста) Возникают некоторые недопонимания в изучении JS после использования PHP. Особенно интересен 3тий пример.