首頁  >  問答  >  主體

javascript - 在Egret源码看到这样一段代码,isNaN()性能提升?

不知道有没有知情的大大分析一下?

//覆盖原生的isNaN()方法实现,在不同浏览器上有2~10倍性能提升。
    window["isNaN"] = function(value:number):boolean{
        value = +value;
        return value !== value;
    };

代码位置
https://github.com/egret-labs/egret-core/blob/master/src/egret/web/EgretWeb.ts#L111

补充

查阅了一些相关资料
http://jacksondunstan.com/articles/450

发现另外一个isNaN的替换方法

return !(val <= 0) && !(val > 0);

测试(customIsNaN为egret的方法,customIsNaN2为另一个方法),不知道测试方法是否正确
http://jsperf.com/isnanperfcustom/4

在Maxthon和Chrome45,在参数为数值(number)时,egret覆盖的方法(customIsNaN)稍微快一点,传入参数为字符串(string)时,原生的isNaN更快

在Microsoft Edge,无论传入number还是string,都是原生的isNaN更快

感觉真的是画蛇添足然并卵的节奏啊

天蓬老师天蓬老师2770 天前458

全部回覆(0)我來回復

無回覆
  • 取消回覆