В Javascript переменные функции являются локальными, если они не объявлены с помощью "var".То есть, если эти функции не являются анонимными (как те, которые используются в setInterval и setTimeout. В этом случае они имеют глобальный доступ ко всем доступным переменным в области действия, которая вызывает анонимные функции.
«Есть ли способ разрешить им доступ ко всем переменным?» Я спрашиваю об этом в связи с некоторыми случаями наличия очень сложных функций в одной родительской функции со многими переменными, когда мне вдруг приходится превращать их из анонимных в обычные функции.
Например, давайте предположим, что моя оригинальная анонимная функция называется alert, и теперь я хочу сделать это через обычную функцию:
myFunction()
function myFunction() {
var a='b' //,b=...,c=...,d=...,e=...,f=...,g=...,h=...,i=...,j=...,k=...
setInterval(function(){ alert(a) }, 3000) // Works even though a is local
setInterval(function(){ dummy() }, 3000) // Fails, but would work if I used dummy(a).
// But then I'd have to use dummy(a,b,c,d,e,f,g,h,i,j,k,...)
}
function dummy() { // It would have worked had I used dummy(a)
alert(a)
}