Этот вопрос больше относится к принципу javascript.
function done(){ console.log('done defined with `function done(){ ...`'); }
var done = function(){ console.log('done defined with `var done = ...`'); }
done = function(){ console.log('without `var`, just `done = ...`'); }
Если они определены прямо внутри тегов <script>
, будут ли они все делать то же самое, верно?
Но если я их разместув замыкании (function(){
здесь идет определение функции }())
переопределит ли любой из этих трех типов либо глобально определенную функцию done () , либо любую другую done () функции, которые определены внутри их соответствующих замыканий?
Если вопрос выше не имеет смысла, перефразируем;
- должен ли следующий код делать то же самое в любой среде выполнения JS?
eval
-ing-код где-нибудь выполняет этот конкретный код в контексте или глобальной области действия? как можно настроить вызов setTimeout
так, чтобы код между его "quotes "выполняется внутри области, где был вызван конкретный setTimeout
(см. второй тайм-аут внутри for
ниже)?Я имею в виду, есть ли другой способ, кроме определения функций window.blabla и указания им удалять себя после запуска?
function done(d){ console.log('cha cha cha: '+d); }
setTimeout( function(){ done(2); }, 3500 );
for(i=0; i<10; i++){
(function(){
done = function(x){ console.log('done #'+i+' sais: '+x); }
setTimeout(function(){ done(i*2); },2500);
setTimeout(function(){ done(i*2); }.toString()+'(); ',2500);
}());
}