1
dorentus 2014-02-10 23:42:38 +08:00
window.setInterval 第一个参数用字符串的话,估计是运行到的时候才 eval 的吧,谁知道它那时用的是哪的作用域(或许是全局?)……
|
2
tinyhill 2014-02-10 23:49:52 +08:00
$(function () {
var o; o = { v: 0, m: function () { alert("hello"); } }; window.o = o; setInterval("o.m()", 1000); }); |
3
qq286735628 2014-02-10 23:53:15 +08:00
$(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-02-11 00:03:30 +08:00 2
如果你想问什么时候用字符串、什么时候用函数的话,那么答案是:「永远都只用函数」。
---- 稍微长点的答案是:「当然,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-02-11 07:45:29 +08:00
tinyhill 回答的对。
|