• JavaScript 小函数积累及性能优化


    获取值的类型:

    var toString = Object.prototype.toString;
    function getType(o) {
        return toString.call(o).slice(8,-1);
    }
    document.write(getType(null));
    document.writeln("<br/>");
    document.write(getType(undefined));

    输出:

    定义一个 log 方法,让它可以代理 console.log 方法,常见的解决方法是:

    function log() {
        var args = Array.prototype.slice.call(arguments);
        args.unshift('(app)');
        console.log.apply(console, args);
    }

     重复定时器

    setTimeout(function () {
        var div=document.getElementById("myDiv");
        left=parent(div.style.left)+5;
        div.left=left+"px";    
        if(left<200){
            setTimeout(arguments.callee,50);
        }
    });

     js
    访问全局变量总是比访问局部变量慢,因为需要遍历作用域链,只要减少花费在作用域链上的时间,就能增加脚本的整体性能。
    1.可能优化脚本性能最重要的就是注意全局查找
    2.避免使用with语句
    例子:

    function update()
    {
        var imgs=document.getElementBuTagName("img");
        for(var i=0;len=imgs.length,i<len;i++)
        {
            imgs[i].title=document.title+" image "+i;
        }
        var msg=document.getElementById("msg");
        msg.innerHTML="Update Complete"
    }

    优化后:(现在函数只执行一次全局查找速度更快)

    function update()
    {
        var doc=document;
        var imgs=doc.getElementBuTagName("img");
        for(var i=0;len=imgs.length,i<len;i++)
        {
            imgs[i].title=doc.title+" image "+i;
        }
        var msg=doc.getElementById("msg");
        msg.innerHTML="Update Complete"
    }


    对循环的优化

    for(var i=0;i<values.length;i++)
    {
        process(values[i]);
    }

    优化1,后值循环

    for(var i=values.length-1;i>=0;i--)
    {
        process(values[i]);
    }

    优化2,后侧循环:

    var i=values.length-1;
    if(i>-1)
    {
        do{
            procrss(values[i]);
        }while(--i>=0);
    }

    js优化要注意的其他事项:

    1. 原生方法较快
    2. switch语句较快
    3. 位运算符较快


    多个变量声明:

    var count=5;
    var color="blue";
    var values=[1,2,3];
    var now=new Date();


    使用单个var声明比多个var声明快很多。

    var count=5,
        color="blue",
        values=[1,2,3],
        now=new Date();



    插入迭代值:

    var name=values[i];
    i++;

    优化为:

    var name=values[i++];

    使用数组和对象字面量:

    var values=new Array();
    values[0]=123;
    values[1]=456;
    values[2]=789;
    
    var person=new Object();
    person.age=29;
    person.name="zhang";
    person.say=function(){
        alert(this.name);
    }

    优化:

    var values=[123,456,789];
    var person={
        name:"zhang",
        age:29,
        say:function(){
            alert(this.name);
        }
    };

















  • 相关阅读:
    groovy集合
    groovy函数、字符串、循环
    groovy运行程序和类型推断
    常见IT英语短语一
    常见IT英语单词
    认识Groovy
    maven入门
    springboot之内嵌tomcat修改端口号
    springboot手动配置数据源:
    img与父元素的间隙解决
  • 原文地址:https://www.cnblogs.com/zhangyuanbo12358/p/5538565.html
Copyright © 2020-2023  润新知