
1 dorentus 2014 年 2 月 10 日 window.setInterval 第一个参数用字符串的话,估计是运行到的时候才 eval 的吧,谁知道它那时用的是哪的作用域(或许是全局?)…… |
2 tinyhill 2014 年 2 月 10 日 $(function () { var o; o = { v: 0, m: function () { alert("hello"); } }; window.o = o; setInterval("o.m()", 1000); }); |
3 qq286735628 2014 年 2 月 10 日 $(function ( ) { var o; o= { v:0, m:function () { alert("hello"); } }; setInterval(o.m,1000); }); |
4 jacob OP @dorentus 你提醒我了,不用字符串做参数,直接用函数或者方法的引用就行了。setInterval(o.m,1000);但还是不知道为什么用字符串和函数做参数 |
6 jacob OP @qq286735628 我提交后看到你的回复了- - |
8 dorentus 2014 年 2 月 11 日 如果你想问什么时候用字符串、什么时候用函数的话,那么答案是:「永远都只用函数」。 ---- 稍微长点的答案是:「当然,setInterval 的第一个参数当然可以用字符串、eval 也并非一无是处,不过仅仅在你知道你在做什么的时候、并且你完全确定你要这么做的时候,才用它们」。 ---- 参见: 1) https://developer.mozilla.org/en-US/docs/Web/API/Window.setInterval 2) https://developer.mozilla.org/en-US/docs/Web/Javascript/Reference/Global_Objects/eval |
9 yimity 2014 年 2 月 11 日 tinyhill 回答的对。 |