Javascript:forked函数声明效率有多高?
我刚刚阅读了这篇关于命名函数表达式及其与IE< = 8的不兼容性的文章。
我特别好奇一个陈述:
Web开发中的一种常见模式是基于某种特征测试来“分叉”函数定义,从而实现最佳性能。
从他的页面中摘取的一个例子:
var contains = (function() {
var docEl = document.documentElement;
if (typeof docEl.compareDocumentPosition != 'undefined') {
return function(el, b) {
return (el.compareDocumentPosition(b) & 16) !== 0;
};
}
else if (typeof docEl.contains != 'undefined') {
return function(el, b) {
return el !== b && el.contains(b);
};
}
return function(el, b) {
if (el === b) return false;
while (el != b && (b = b.parentNode) != null);
return el === b;
};
})();
当我看到这一点时,我的直接反应是维持这一点很糟糕。以这种方式编写的代码并不能真正理解为易于理解。
在这种情况下,不是在声明外部函数之后立即调用的另一个函数中有条件地定义函数,而是可以编写嵌套的if
s函数。它会更长,但在我看来更容易理解(虽然我来自C / C ++ / Java)。
我希望答案包括一些测试数字或解释这些函数在运行时如何不同。
没有找到相关结果
已邀请:
4 个回复
才脊烽馈低
运算符“应用”(读取:调用)。
快乐的编码。
癸痊醒
。这将立即执行外部函数的结果并将其分配给
。每次使用函数
时,它比执行底层逻辑更有效。 而不是每次调用
都会调用
,而是在代码首次执行时执行一次。
存在或不存在的事实不会改变,因此只检查一次是理想的。
氮顺
s的单个函数意味着每次调用函数时都需要重新评估条件。但是,我们知道条件的结果永远不会改变。 如果您担心可读性,可以通过更易读的方式实现类似的效果:
要么:
香腔弥胯瓤