这个问题更多的是JavaScript原则。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(){
功能definintion放在这里}())
将所有这三种类型中覆写全局定义的函数()完成或任何其他()完成被内部定义的函数他们各自的关闭?
如果上面的问题没有意义,这里是改写;
- 是下面的代码应该在任何JS运行时做同样的事情?
eval
- 任何地方的代码都可以在上下文或全局范围内执行该特定代码?如何才能
setTimeout
电话进行配置,以便其“引号”之间的代码执行中具有特定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); }()); }
不要用你的第二个超时的方法。或者有什么理由? – Bergi 2012-02-18 04:01:03