在Javascript中有以下区别:
return setTimeout(this._onTimeout, 1000*secs);
和
setTimeout(this._onTimeout, 1000*secs);
return;
前者并不总是运行超时,但后者总是如此。所以感觉就像是有区别,但我的google-fu未能找到原因。
答案 0 :(得分:2)
> return setTimeout(this._onTimeout, 1000*secs);
和
> setTimeout(this._onTimeout, 1000*secs); return;
前者并不总是运行超时,但后者始终执行
你有倒退。如果代码正确执行,则第一个始终将返回对 setTimeout 的引用,该引用可用于取消它。第二个始终返回 undefined 。任何其他行为都不符合ECMA-262。
如果您遇到其他一些行为,代码中会出现错误,或者您发布的内容不是正在运行的内容。
答案 1 :(得分:1)
如果它被这样使用:
var obj = {
set1 : function(secs) {
return setTimeout(this._onTimeout, 1000*secs);
},
set2 : function(secs) {
setTimeout(this._onTimeout, 1000*secs);
return;
},
_onTimeout : function() {
alert("worked");
}
};
clearTimeout(obj.set1(1));
clearTimeout(obj.set2(1));
只有第二行会导致_onTimeout实际触发。
答案 2 :(得分:0)
绝对没有区别。 尝试运行此代码:
(function() {
return setTimeout(function(){console.log(1)}, 500);
})();
(function() {
setTimeout(function(){console.log(2)}, 500);
return;
})();
return
不会影响JS解释器中的setTimeout调用。