码迷,mamicode.com
首页 > Web开发 > 详细

JS方面重点摘要(二)

时间:2018-02-28 20:48:04      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:val   dom节点   选择   子集   避免   注册   一个   返回   推荐   

1、函数声明与函数表达式
(1)变量声明会置顶提前,但赋值仍在原地方
(2)函数声明同变量声明一样会提前;但是,函数表达式没有提前,就相当于平时的变量赋值
(3)函数声明会覆盖变量声明,但不会覆盖变量赋值:函数声明优先级高于变量声明的优先级;但是变量赋值以后,变量赋值初始化就会覆盖函数声明。
2、函数arguments属性初始化:
(1)callee:指向当前函数的引用
(2)length:真正传递的参数个数
(3)arguments的索引值小于传参的个数,则其值和实际传参的值是共享的;如果大于,则不共享,相方不相关,互不影响
3、and、or、not运算符详解:
And:(1)一个对象一个布尔,返回对象(2)2个都是对象返回第二个(3)某个是null或NaN,返回null或NaN(4)某个是undefined发生错误(5)2个都是布尔,返回布尔
Or:(1)一个对象一个布尔,返回对象(2)2个都是对象返回第一个(3)某个是null或NaN,返回null或NaN(4)某个是undefined发生错误
Not:(1)是对象,返回false(2)是0返回true,否则false(3)是null或NaN,返回true;是undefined发生错误
技巧:使用2个not运算符判断变量的布尔值(第一个not返回布尔值,再第二个not取反获得变量的真实布尔值)
4、性能优化:
(1)避免全局查找:用局部变量存储全局变量来减少全局查找,因为全局查找需要一直找到作用域链最顶端
(2)定时器:少用setTimeout,因为setTimeout每次都会初始化一个定时器,而setInterval只在开始的时候初始化一个定时器
(3)字符串连接少用+=,如果需要多次对同一个字符串进行+=操作的话,可以用数组来缓存,然后join方法连接
(4)数字转为字符串:"" + > String() > toString() > new String()
(5)浮点数转为整型推荐用Math.floor()或Math.round(),parseInt多用于将字符串转为数字
(6)多个变量声明,使用单var形式,以减少脚本执行时间
(7)多使用直接量更好,如:var array = [];
(8)使用文档碎片来构建dom结构:document.createDocumentFragment()
(9)使用innerHTML赋值代替构建dom元素
(10)尽量使用更准确的选择器,减少查找时间;对于获取兄弟元素,子集元素等也是一样的道理,尽量是定位更准确,避免循环
(11)删除dom节点之前,一定要删除注册在该节点上的事件,否则会产生无法回收的内存;
此外,在removeChild和innerHTML=""之间选择后者,因为用removeChild无法有效释放dom节点
(12)使用事件代理
(13)重复使用的结果,先保存到局部变量,避免多次取值的调用开销

JS方面重点摘要(二)

标签:val   dom节点   选择   子集   避免   注册   一个   返回   推荐   

原文地址:https://www.cnblogs.com/goloving/p/8485623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!