获取值的类型:

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);
}
};

JavaScript 小函数积累及性能优化的更多相关文章

  1. [daily][optimize] 一个小python程序的性能优化 (python类型转换函数引申的性能优化)

    前天,20161012,到望京面试.第四个职位,终于进了二面.好么,结果人力安排完了面试时间竟然没有通知我,也没有收到短信邀请.如果没有短信邀请门口的保安大哥是不让我进去大厦的.然后,我在11号接到了 ...

  2. react第八单元(什么是纯函数-组件的性能优化-pureComponent-组件性能优化的原理)

    课程目标 理解纯函数 熟练掌握组件性能优化的几种技巧 pureComponent和Component的区别 #知识点 一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数 ...

  3. Javascript之UI线程与性能优化

    在浏览器中,Javascript执行与UI更新是发生在同一个进程(浏览器UI线程)中的.UI线程的工作基于一个简单的队列系统,任务会被保存到队列中直到进程空闲时被提取出来执行.所以Javascript ...

  4. 【JavaScript】页面加载性能优化

    核心在于:减少加载时间 1.减少请求次数 2.缩减文件大小 3.异步加载---------------------->比如document.write 4.延迟加载.动态加载---------- ...

  5. 【前端性能优化】高性能JavaScript整理总结

    高性能JavaScript整理总结 关于前端性能优化:首先想到的是雅虎军规34条然后最近看了<高性能JavaScript>大概的把书中提到大部分知识梳理了下并加上部分个人理解这本书有参考雅 ...

  6. react教程 — 性能优化

    参考:https://segmentfault.com/a/1190000007811296?utm_medium=referral&utm_source=tuicool  或  https: ...

  7. 摘:JavaScript性能优化小知识总结

    原文地址:http://www.codeceo.com/article/javascript-performance-tips.html JavaScript的性能问题不容小觑,这就需要我们开发人员在 ...

  8. JavaScript性能优化小知识总结(转)

    JavaScript的性能问题不容小觑,这就需要我们开发人员在编写JavaScript程序时多注意一些细节,本文非常详细的介绍了一下JavaScript性能优化方面的知识点,绝对是干货. 前言 一直在 ...

  9. JavaScript性能优化小窍门汇总(含实例)

    在众多语言中,JavaScript已经占有重要的一席之地,利用JavaScript我们可以做很多事情 , 应用广泛.在web应用项目中,需要大量JavaScript的代码,将来也会越来越多.但是由于J ...

随机推荐

  1. 自定义cell设置现价,原价(加横线)

    原价,现价分别是连个label.这两个label不能直接限制死他们的宽度,因为他们的宽度不确定,而由于lable的特殊性,不设置它的宽度约束时,宽度取决于文字的内容,所以两个lable的约束设置好一些 ...

  2. 基于 Koa平台Node.js开发的KoaHub.js的控制器,模型,帮助方法自动加载

    koahub-loader koahub-loader是基于 Koa平台Node.js开发的KoaHub.js的koahub-loader控制器,模型,帮助方法自动加载 koahub loader I ...

  3. Vue基本入门

    介绍 1.Vue.js是什么? Vue.js(读音:/vju:/,类似于view)是一套构建用户界面的渐进式框架,与其他重量级框架不同的是,Vue采用的是自底向上增量开发的设计. Vue的核心库只关注 ...

  4. SEO-发信息注意的问题

    SEO是什么? SEO的全称是Search Engine Optimization,翻译过来就是搜索引擎优化,说到搜索引擎,可能不是特别的清楚.通俗点讲,就是百度,谷歌,雅虎,这些可以直接搜索到你想要 ...

  5. ReactJS React+Redux+Router+antDesign通用高效率开发模板,夜间模式为例

    工作比较忙,一直没有时间总结下最近学习的一些东西,为了方便前端开发,我使用React+Redux+Router+antDesign总结了一个通用的模板,这个技术栈在前端开发者中是非常常见的. 总的来说 ...

  6. Jmeter正则提取器常用的几种方式

    使用jmeter的同学都知道,jmeter提供了各种各样的提取器,如jsonpath.Beanshell.Xpath.正则等!!! 我们就针对正则提取器如何使用进行说明. 举例说明:假设取sessio ...

  7. "浏览器端" 使用 commonjs 模块规范开发网页应用,像开发 node 那样开发网页应用

    Containjs 1.0 Containjs 是什么? Containjs 是一个基于 Commonjs 模块管理规范的 浏览器端 的 JavaScript 模块加载器(目前为非标准的,代码会持续迭 ...

  8. JDK中日期和时间的几个常用类浅析(三)

    java.text.SimpleDateFormat   SimpleDateFormat类是用于把字符串解析成日期时间和把日期时间格式化成字符串的工具类.该类主要和java.util.Date类配合 ...

  9. django出现__init__() got an unexpected keyword argument 'mimetype‘ 问题解决

    这种问题好多新手按照djangobook学习的时候应该都遇到过,是因为这是老的django的写法,新的django已经升级改变了很多东西. 处理方法如下: I think you are not us ...

  10. windows32位安装MYSQL-python1.2.3

    建议不要用pip安装MYSQL-python,因为会自动选择MYSQL-python1.2.5这个版本,但是这个版本不支持windows 32位系统. 1.首先安装VS2008,因为要依赖VC9.0编 ...