今天给大家分享下js代码优化的相关技巧。

1.使用“+”转换为数值

    我们平时开发过程中需要将数字字符串创转为number类型,大多数都会用JavaScript parseInt() 函数,请看我下面的例子:

  1. function toNumber(strNumber){
  2. return +strNumber;
  3. }
  4. console.log(toNumber("123456"));// 123456
  5. console.log(toNumber("abc"));// NaN
  1. //作用于Date函数直接返回时间戳
  2. console.log(+new Date());//

注意只能用于数字字符串,否则返回“NaN”。

2.减少条件代码

  1. if(conected){
  2. login();
  3. }
  4. //上述可以简写为
  5. conected && login();

3.在循环中缓存array.length

我们在开发中,通常遇到要循环遍历数组的情况,大家一般都会像下面一样写循环遍历,循环体中,每循环一次,就要重计算数组长度,如果数组太大,会影响程序性能。我们应该缓存数组的长度,提高程序性能。

  1. //优化前
  2. for( var i=0;i<array.length;i++){
  3. ......
  4. }
  5. //优化后
  6. for( var i=0 , length = array.length;i<length;i++){
  7. ......
  8. }

4.获取数组中最后的元素

  1. var array = [1,2,3,4,5,6];
  2. console.log(array.slice(-1));// [6]
  3. console.log(array.slice(-2));// [5,6]
  4. console.log(array.slice(-3));// [4,5,6]

5.数组截断

  1. var array = [1,2,3,4,5,6];
  2. console.log(array.length);//
  3. array.length = 3;
  4. console.log(array.length);//
  5. console.log(array);// [1,2,3]

6.数组合并

    在开发中,我遇到一次需要:实现下拉刷新的功能,需要不断向数组中添加新数组。我当时用到的是Array.concat()方法。但是数据量大的时候会出现长时间数据加载不出来的情况。我在网上查找了半天解决了这个问题,使用Array.push.apply(arry1,arry2)来实现。减少内存消耗。

  1. //优化前
  2. var arry1 = [1,2,3];
  3. var arry2 = [4,5,6];
  4. console.log(arry1.concat(arry2));//[1,2,3,4,5,6]
  5.  
  6. //优化后
  7. var arry3 = [1,2,3];
  8. var arry4 = [4,5,6];
  9. console.log(arry3.push.apply(arry4));//[1,2,3,4,5,6]

今天的知识分享到这里,希望大家每天都能进步一点点!

  1. toNumber

前端js代码优化的更多相关文章

  1. 前端Js框架汇总

    概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领域心花路放,也是煞是羡慕.寻了寻.net的消息,也是振奋人心,.net co ...

  2. 闲聊——浅谈前端js模块化演变

    function时代 前端这几年发展太快了,我学习的速度都跟不上演变的速度了(门派太多了,后台都是大牛公司支撑类似于facebook的react.google的angular,angular的1.0还 ...

  3. json处理总结(前端js和后端java)

    前端(js): json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键,下面将介绍两者之间的相互转换. json字符串:var st ...

  4. 前端js文件合并三种方式

    最近在思考前端js文件该如何合并,当然不包括不能合并文件,而是我们能合并的文件,想了想应该也只有三种方式. 三个方式如下: 1. 一个大文件,所有js合并成一个大文件,所有页面都引用它. 2. 各个页 ...

  5. 2015 前端[JS]工程师必知必会

    2015 前端[JS]工程师必知必会 本文摘自:http://zhuanlan.zhihu.com/FrontendMagazine/20002850 ,因为好东东西暂时没看懂,所以暂时保留下来,供以 ...

  6. RSA加密前端JS加密,后端asp.net解密,报异常

    RSA加密前端JS加密,后端asp.net解密,报异常 参考引用:http://www.ohdave.com/rsa/的JS加密库 前端JS加密代码: function GetChangeStr() ...

  7. 前端js的书写规范和高效维护的方案_自我总结使用的方案

    作为程序员,人生最值得幸福的事有几件: 解决困扰了很长时间的问题 升职加薪 找个漂亮又靠谱的对象 深得领导的喜欢 带领团队冲锋陷阵 ... 哈哈,这些都是梦想,暂时想想就好了.这肯定和我说的东西不符合 ...

  8. 前端js,css文件合并三种方式,bat命令

    前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...

  9. 前端js上传文件 到后端接收文件

    下面是前端js代码: <html> <head> <meta http-equiv="Content-Type" content="text ...

随机推荐

  1. UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现

      UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现   测试数据 java代码 package com.hzf.spark.study; import ...

  2. git学习网址

    git的学习网址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/

  3. 使用VSCode和VS2017编译调试STM32程序

    近两年,微软越来越拥抱开源支持跨平台,win10搭载Linux子系统,开源VSCode作为跨平台编辑器,VS2017官方支持了Linux和嵌入式开发功能. ST也是,近两年开发的软件工具基本都是跨平台 ...

  4. mysql的水平拆分和垂直拆分

    转:http://www.cnblogs.com/sns007/p/5790838.html 1,水平分割: 例:QQ的登录表.假设QQ的用户有100亿,如果只有一张表,每个用户登录的时候数据库都要从 ...

  5. confirm显示数组中的内容时,总是带一个逗号分隔的解决方法

    问题的关键 就是在给confirm显示之前,将数组转换成字符串,并以每个数组的元素为一个字符串,加上一个换行回车符即可: 代码中的背景色 为关键的点 <script type="tex ...

  6. jquery与js添加子元素

    例如在select中添加option JQuery做法: <select id="myselect" name="myselect"> </s ...

  7. linkin大话设计模式--单例模式

    linkin大话设计模式 开文前先弱弱的问一句:什么是设计模式?我在研究java2ee的时候有研究过,在学js的时候也有看到.设计模式的概念最早源于建筑设计大师<建筑的永恒算法>一书,它表 ...

  8. linkin大话设计模式--适配器模式

    linkin大话设计模式--适配器模式 大家知道,在java中只允许单继承,但是在实际问题中往往都需要多继承,java引入了接口这一概念.(一个类可以实现多个接口) 由于接口中都是抽象方法,那么我们在 ...

  9. 通过反编译深入理解Java String及intern(转)

    通过反编译深入理解Java String及intern 原文传送门:http://www.cnblogs.com/paddix/p/5326863.html 一.字符串问题 字符串在我们平时的编码工作 ...

  10. 【高并发简单解决方案】redis队列缓存 + mysql 批量入库 + php离线整合

    需求背景:有个调用统计日志存储和统计需求,要求存储到mysql中:存储数据高峰能达到日均千万,瓶颈在于直接入库并发太高,可能会把mysql干垮. 问题分析 思考:应用网站架构的衍化过程中,应用最新的框 ...