博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js数据访问的艺术
阅读量:7049 次
发布时间:2019-06-28

本文共 868 字,大约阅读时间需要 2 分钟。

     数据访问js无时不刻所要做的事情,提高对数据的访问效率对一般的小的程序来说,对性能并不会有明显的改善。但是对像淘宝这样项目巨大,访问量巨大的网站来说,一个数据访问效率的提高对性能来说可能产生很大提升。

    js中有四种基本的数据访问位置。直接量,变量,数组项,对象。 对直接量和局部变量的访问成本是比较低的,而对数组和对象的访问成本稍大一些,当然不同的浏览器对这四种方式的访问差异也是不一样的,下图对这四种数据类型进行200'000 次操作所用的时间。

      从上图可以看出,对直接量和局部变量的访问成本比另外两种要低很多,所以应该尽量使用直接量或局部变量。

     一般来说,js中会将所有的变量保存在一条作用域链上,当需要访问一个数据时,它会从离它最近的作用域找,如果找到就停止,没找到就会一直沿着作用域链找先去,全局变量是位于作用域链的最底部。所以访问全局变量的成本是相当高的,特别是在深层函数中访问全局变量,因此要避免访问全局变量。

     说到作用域链,就不得不提起js中可以临时改变上下文的作用域的两个表达式,一个是with,另一个是try catch。

      with 表达式为所有对象属性创建一个默认操作变量,在其他语言中,类似的功能通常用来避免书写一些重复的代码。但是这种方式会造成很多问题,不建议使用,而且在Ecmscript5中的严格模式下,with已经不能使用。在JavaScript 中不只是with 表达式人为地改变运行期上下文的作用域链,try-catch 表达式的catch 子句具有相同效果。当try 块发生错误时,程序流程自动转入catch 块,并将异常对象推入作用域链前端的一个可变对象中。但是请注意,只要catch 子句执行完毕,作用域链就会返回到原来的状态。

     另外一种对性能可能产生影响的方式就是使用闭包。闭包在js中可以说是个神奇的东西,它会对解决问题提供很好的帮助,但是对性能和内存都有很大影响。所以要慎用闭包。

转载于:https://www.cnblogs.com/alichengyin/p/4194094.html

你可能感兴趣的文章
mysql使用索引优化查询效率
查看>>
Salt Syndic配置
查看>>
Linux下Git和GitHub使用方法总结 (码云)
查看>>
linux 安装与卸载软件
查看>>
windows phone 浏览器
查看>>
SQL Server 百万级数据提高查询速度的方法
查看>>
汇编程序:哆瑞米发商拉西
查看>>
centos 7.3 LVS的NAT模式负载均衡实操
查看>>
Zend Server 安装记录
查看>>
算法学习之路|判断题
查看>>
mongoDB文档操作
查看>>
Swiper – 经典的移动触摸滑块插件【免费】
查看>>
Java Formatter 阅读心得
查看>>
利用数据库漏洞扫描评估数据库安全性 4 弱口令扫描
查看>>
【Android游戏开发十一】手把手让你爱上Android sdk自带“9妹”
查看>>
[AlwaysOn Availability Groups]SQL Server错误日志(AG)
查看>>
融合移动设备操作系统的随想(I)
查看>>
崩溃中!Nhibernate的数据分页.
查看>>
如何更改一台已经安装了MOSS2007的服务器名称
查看>>
oralce flashback 使用方法总结
查看>>