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优化要注意的其他事项:
- 原生方法较快
- switch语句较快
- 位运算符较快
多个变量声明:
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 小函数积累及性能优化的更多相关文章
- [daily][optimize] 一个小python程序的性能优化 (python类型转换函数引申的性能优化)
前天,20161012,到望京面试.第四个职位,终于进了二面.好么,结果人力安排完了面试时间竟然没有通知我,也没有收到短信邀请.如果没有短信邀请门口的保安大哥是不让我进去大厦的.然后,我在11号接到了 ...
- react第八单元(什么是纯函数-组件的性能优化-pureComponent-组件性能优化的原理)
课程目标 理解纯函数 熟练掌握组件性能优化的几种技巧 pureComponent和Component的区别 #知识点 一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数 ...
- Javascript之UI线程与性能优化
在浏览器中,Javascript执行与UI更新是发生在同一个进程(浏览器UI线程)中的.UI线程的工作基于一个简单的队列系统,任务会被保存到队列中直到进程空闲时被提取出来执行.所以Javascript ...
- 【JavaScript】页面加载性能优化
核心在于:减少加载时间 1.减少请求次数 2.缩减文件大小 3.异步加载---------------------->比如document.write 4.延迟加载.动态加载---------- ...
- 【前端性能优化】高性能JavaScript整理总结
高性能JavaScript整理总结 关于前端性能优化:首先想到的是雅虎军规34条然后最近看了<高性能JavaScript>大概的把书中提到大部分知识梳理了下并加上部分个人理解这本书有参考雅 ...
- react教程 — 性能优化
参考:https://segmentfault.com/a/1190000007811296?utm_medium=referral&utm_source=tuicool 或 https: ...
- 摘:JavaScript性能优化小知识总结
原文地址:http://www.codeceo.com/article/javascript-performance-tips.html JavaScript的性能问题不容小觑,这就需要我们开发人员在 ...
- JavaScript性能优化小知识总结(转)
JavaScript的性能问题不容小觑,这就需要我们开发人员在编写JavaScript程序时多注意一些细节,本文非常详细的介绍了一下JavaScript性能优化方面的知识点,绝对是干货. 前言 一直在 ...
- JavaScript性能优化小窍门汇总(含实例)
在众多语言中,JavaScript已经占有重要的一席之地,利用JavaScript我们可以做很多事情 , 应用广泛.在web应用项目中,需要大量JavaScript的代码,将来也会越来越多.但是由于J ...
随机推荐
- apicloud上传图片
//定义api $("#photo").change(function(){ //获取图片 api.getPicture({ sourceType: 'library', enco ...
- Maximum Depth of Binary Tree leetcode
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...
- 1664: [Usaco2006 Open]County Fair Events 参加节日庆祝
1664: [Usaco2006 Open]County Fair Events 参加节日庆祝 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 255 S ...
- android开发艺术探索读书笔记之-------view的事件分发机制
View的点击事件的分发,其实就是对MotionEvent事件的分发过程,即当一个MotionEvent产生后,系统需要把这个事件传递给一个具体的View,而这个过程就是分发过程. 分发过程主要由以下 ...
- conky 1.10以后的新配置格式
包装 config conky.config = { ... } 包装 TEXT conky.text = [[ ... ]] 每个 config 选项的变量和取值之间插入 "=" ...
- 腾讯云数据库团队:phpMyAdmin中sql-parser组件的使用
phpMyAdmin是一款基于Web端运行的开源数据库管理工具,支持管理MySQL和MariaDB两种数据库. phpMyAdmin的程序主要使用php和javascript开发,它的安装使用都比较简 ...
- ansj 2.0.7 错误例子分析
我在做一个solr的项目,分词选定了ansj分词. 选择ansj的原因: 1)身边若干朋友的念叨,说是效果不错 2)网上看了若干评论,说是不错 3)自己尝试了一些case,觉得确实不错. 好了,项目中 ...
- hdoj1242(dfs 剪枝 解法)
题意:拯救行动,天使r有多个朋友a(friends,在这里被坑了几次,没看清题意),天使被关在牢房里,等着朋友来拯救,求拯救天使的最短距离. 解法:如果不剪枝,200*200的地图会超时,可以以天使为 ...
- JavaMail邮件发送不成功的那些坑人情况及分析说明
[我的Segmentfault原文]https://segmentfault.com/a/1190000008030346 前言 JavaMail的使用本身并不难,网上有不少案例,简单易懂,而且有 ...
- 2017Java技术预备作业1501黄学超
阅读邹欣老师的博客,谈谈你期望的师生关系是什么样的? 我觉得师生关系应当是亲密无间,课上老师讲解学生配合,课下师生交流启发思考. 你有什么技能(学习,棋类,球类,乐器,艺术,游戏,......)比大多 ...