che*_*zer 1 javascript callback
我在调用之前看到了很多种用于检查回调函数的方法.
1)
function(callBack)
{
...
if(callBack != null)
callBack();
}
Run Code Online (Sandbox Code Playgroud)
2)
function(callBack)
{
...
if(typeof callBack == 'function')
callBack();
}
Run Code Online (Sandbox Code Playgroud)
3)
function(callBack)
{
...
if(callBack !== null)
callBack();
}
Run Code Online (Sandbox Code Playgroud)
4)
function(callBack)
{
...
if(callBack != undefined)
callBack();
}
Run Code Online (Sandbox Code Playgroud)
5)
function(callBack)
{
...
try{
callBack();
} catch(err) {}
}
Run Code Online (Sandbox Code Playgroud)
6)
function(callBack)
{
...
if (callBack && typeof(callBack) == "function")
callBack();
}
Run Code Online (Sandbox Code Playgroud)
7)
function(callBack)
{
...
if(callBack)
callBack();
}
Run Code Online (Sandbox Code Playgroud)
8)
function(callBack)
{
...
if(typeof window[callBack] === 'undefined')
callBack();
}
Run Code Online (Sandbox Code Playgroud)
9)
function(callBack)
{
...
if(callBack instanceof Function)
callBack();
}
Run Code Online (Sandbox Code Playgroud)
我相信还有更多......
检查给定的'callBack'参数是否为函数的最佳方法是什么?
为什么不使用其他例子.
if (callBack != null)
当然,为什么不呢.请注意,仍有许多非功能值通过此功能.
if (typeof callBack == 'function')
这正是你想要的.
if (callBack !== null)
号时不工作callBack的undefined.
if (callBack != undefined)
而不是.请参阅如何在JavaScript中检查"未定义"?为什么null有利(虽然相当).
try{ callBack(); } catch(err) {}
呃,可能更慢,吞下回调中的任何错误.如果这是你想要的,你仍然应该将它与其他测试结合起来.
if (callBack && typeof(callBack) == "function")
冗余,但可能比单纯的typeof测试更快.如果你关心性能,你会想要测试这个,否则几乎没有理由这么冗长.
if (callBack)
当然,为什么不呢.请注意,仍有许多真正的非功能值通过此功能.
if (typeof window[callBack] === 'undefined')
不,这绝对是一件非常不同的事情.
if (callBack instanceof Function)
这应该适用于除了一些极端边缘情况之外的所有情况,但使用typeof更安全(和更快).
| 归档时间: |
|
| 查看次数: |
3702 次 |
| 最近记录: |