zoukankan      html  css  js  c++  java
  • 字符串转数字测试--知识备忘

    闲来无事,看了不少js的奇淫技巧,其实很多只是卖弄知识真正用上的并不多,为了满足好奇心做了一个实验。

    这个实验是关于将字符串转成数字的,因为前端处理小数会出很多问题,所以一般都是后台的同学把数据处理好了给前端,但是后端传过来的是字符串,而这些字符串有些是带小数点的,有些是整数,传过来有时候要做一些操作,字符串做不了所以要做类型转换,即String --> Number。

    对于类型转换有常用的几种方法,现在一起看看这几种方法的速度如何?

    字符串转数字的方法有,Number,parseInt,parseFloat,还有隐式转换加号(+)和算式表达(- 0)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
    
        <p id="content"></p>
        <script src="../lib/jquery.js"></script>
        
        <script>
            $(function(){
    
                var str = '3.222';
                var res = [];
                //19.06ms
                console.time('test');
    
                for(var i = 0;i < 100000; i++){
                     res.push(+str);
                }
                console.timeEnd('test');
    
                // 9.35ms
                console.time('Number');
    
                for(var i = 0;i < 100000; i++){
                     res.push(Number(str));
                }
                console.timeEnd('Number');
                // 6.22ms
                console.time('parseInt');
    
                for(var i = 0;i < 100000; i++){
                     res.push(parseInt(str));
                }
                console.timeEnd('parseInt');
    
                //8.84ms
                console.time('parseFloat');
    
                for(var i = 0;i < 100000; i++){
                     res.push(parseFloat(str));
                }
                console.timeEnd('parseFloat');
            });
        </script>
    </body>
    </html>

    结论就是:parseInt > parseFloat > Number > 隐式类型,这里是加号(+)

    测试的浏览器用的是firefox,chrome,发现firefox的差异性较大,chrome下Number和隐式转换差不多,parseInt和parseFloat差不多。

    虽然代码写起来很方便少了字符却没有带来性能上的提升,所以说有些奇淫技巧不能乱用啊

    其实这个实验的起源于+new Date(),看到这个技巧很鸡冻,很风骚,做了实验后才看清事物的本质。

  • 相关阅读:
    javascript的严格模式:use strict
    Ionic在线打包IOS平台应用
    安装nodejs6.9x以后,原来在nodejs4.2.x中运行正常的ionic项目出现问题的解决
    cordova插件分类
    ionic 启用sass
    ngCordova
    为Asp.net WebApi 添加跨域支持
    使用ionic framework创建一个简单的APP
    研究主题
    近两天让我羞愧难当的遭遇
  • 原文地址:https://www.cnblogs.com/masita/p/7426493.html
Copyright © 2011-2022 走看看