当前位置:  开发笔记 > 编程语言 > 正文

哪些跨浏览器的Javascript函数表现更好?

如何解决《哪些跨浏览器的Javascript函数表现更好?》经验,为你挑选了2个好方法。

根据经验,这些编写跨浏览器Javascript函数的方法中哪一个会表现更好?

方法1

function MyFunction() 
{
    if (document.browserSpecificProperty)
       doSomethingWith(document.browserSpecificProperty);
    else
       doSomethingWith(document.someOtherProperty);
}

方法2

var MyFunction;
if(document.browserSpecificProperty) {
    MyFunction = function() {
       doSomethingWith(document.browserSpecificProperty);
    };
} else {
    MyFunction = function() {
       doSomethingWith(document.someOtherProperty);
    };
}

编辑:迄今为止所有优秀答案的Upvote.我已经将函数修复为更正确的语法.

到目前为止,关于答案的几点 - 虽然在大多数情况下它是一个相当无意义的性能增强,但是有一些原因可能仍然需要花费一些时间来分析代码:

必须在慢速计算机,移动设备,旧浏览器等上运行.

好奇心

使用相同的通用主体来提高性能,增强对IF语句的评估确实 需要一些时间的其他方案.

Rex M.. 16

除非你这样做万亿次,否则没关系.使用对您和/或您的组织更具可读性和可维护性的那个.通过编写干净,简单的代码,您可以获得的生产率提高,而不仅仅是缩短JS执行时间的十分之一秒.

你甚至应该开始考虑什么时候表现更好,只有当你编写代码并且速度慢得令人无法接受时.然后你应该开始追踪瓶颈,这永远不会是这样的.在这里,从一个切换到另一个,你永远不会获得可衡量的性能提升.



1> Rex M..:

除非你这样做万亿次,否则没关系.使用对您和/或您的组织更具可读性和可维护性的那个.通过编写干净,简单的代码,您可以获得的生产率提高,而不仅仅是缩短JS执行时间的十分之一秒.

你甚至应该开始考虑什么时候表现更好,只有当你编写代码并且速度慢得令人无法接受时.然后你应该开始追踪瓶颈,这永远不会是这样的.在这里,从一个切换到另一个,你永远不会获得可衡量的性能提升.



2> olliej..:

不幸的是,上面的代码实际上并不是跨浏览器友好的,因为它依赖于其他浏览器中不存在的mozilla怪癖 - 即function 语句被视为分支内的function 表达式.在其他不基于mozilla构建的浏览器上,上面的代码将始终使用第二个函数定义.我做了一个简单的测试用例来证明这一点.

基本上ECMAScript规范说函数语句的处理方式类似于var声明,例如.它们都被提升到当前执行范围的顶部(例如,

和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有