setTimeout能否返回0作为id?

Ais*_*war 29 html javascript settimeout

我正在写一张检查,看看是否有超时.我在想这样做:

var a = setTimeout(fn, 10);
// ... Other code ... where clearTimeout(a) can be called and set to null
if (a != null)
{
   // do soemthing
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有可能a将为0.在这种情况下我会使用 a !== null

Fel*_*ing 29

鉴于此,它不应该:

handle = window . setTimeout( handler [, timeout [, arguments ] ] )
Run Code Online (Sandbox Code Playgroud)

handle是一个用户代理定义的整数,它是大于零,将确定的超时由该呼叫来设置.

  • @Alin:我通过https://developer.mozilla.org/en/DOM/window.setTimeout来到此站点,它说它是DOM Level 0的一部分。所以我认为它实际上比HTML5老,但也许我误解了一些东西。 (2认同)

Ali*_*aru 14

微软,Sun和Mozilla的规范只是说它将返回一个整数.所以0可能包括在内.

某些实现可能(并且可能)排除0但您不应该依赖它.你应该去!==.

总结一下:尽管可能所有浏览器都0从返回的ID中排除,但setTimeout您不应该记住这些代码,特别是当您需要做的就是添加额外的代码时=.


DoX*_*icK 2

第一:0 与 null 不同,(0 == null) 在任何情况下都是 false';

如果您想针对某些内容测试“a”:首先定义“a”,然后将 settimeout 分配给“a”。然后检查“a”的类型。如果其“未定义”,则计时器尚未触发

  • 这并不能回答问题。 (2认同)