首页 > 编程语言 >为什么JavaScript要书写优化?

为什么JavaScript要书写优化?

时间:2024-06-22 20:59:19浏览次数:3  
标签:return 作用域 书写 JavaScript 优化 类型 num var true

第一个原因:我们写代码是给机器看的,也是给程序员看的

第二个原因:JS是弱类型语言,写得太随意编码风格就不好

第三个原因:潜移默化提高程序性能

那要怎么书写优化?

  1. 要按强类型风格写代码

    var num,str,obj;                            // 没有指明类型
    var numVal = 0, strVal = '', objVal = null; // 指明变量类型
    
  2. 不要随意改变变量类型

    var num = 7;               // num类型为number
    num = '-' + num;           // num类型变为string
    // 优秀写法
    var numVal = 7;            // numVal类型为number
    var strVal = '-' + numVal; // 重新定义一个变量没有影响到numVal类型
    
  3. 要函数返回类型确定

    const getMoney = (num) => {
      if(num < 0) return '';  // 返回类型为string
      else return num * 2;    // 返回类型为number
    }
    // 优秀写法
    const getPrice = (num) => {
     if(num < 0) return -1;   // 返回类型为number,-1表示不合法
      else return num * 2;    // 返回类型为number
    }
    
  4. 要让代码运行在局部作用域

    在一个script标签里面,代码的上下文都是全局作用域,全局作用域比较复杂,查找起来比较慢。可以使用function制造一个局部作用域,或者使用ES6的块级作用域。

    <script>
      !function(){
        var myId = document.querySelector('#my-id');
        myId.style.width = '666px';
      }()
    </script>
    
  5. 不要滥用闭包

    const getMoney = (num) => {
       num++;
       return (() => {
         var factor = 2;
         return num * factor - 5;
       })()
    }
    // 优秀写法
    const getPrice = (num) => {
       num++;
       return ((num) => {
         var factor = 2;
         return num * factor - 5;
       })(num)
    }
    

    闭包的作用在于可以让子级作用域使用父级作用域的变量,同时变量在不同闭包是不可见的。第一种写法中num就会一级一级往上查找,如果闭包嵌套越深,变量查找时间越长;第二种写法就保证了num变量和factor变量查找时间是一样的,都是当前作用域。

  6. 避免==的使用

    (1)类型确定没必要使用==

    (2)类型不确定,可以手动类型转换

    (3)使用==,用JSLint检查会报错

    (4)使用==可能出现一些奇怪的现象,会给代码埋下地雷,随时引爆

    null == undefined               // true
    '' == '0'                       // false
    0 == ''                         // true
    0 == '0'                        // true
    ' \t\r\n' == 0                  // true
    new String('abc') == 'abc'      // true
    new Boolean(true) == true       // true
    true == 1                       // true
    NaN == NaN                      // false
    
  7. 要合并表达式

    // 1.使用三目运算符取代简单的if-else
    const getPrice = (num) => {
      return num < 0 ? return -1 : num * 2;
    }
    // 2.使用连等
    var obj = {...};
    // 3.使用自增
    var num = 2;
    num++;
    
  8. 要减少魔数

    // 魔数
    const fn = ('seller','sell', 5, true) => {};
    // 可以给变量起个名字
    let naireType = 'seller';
    let dialogType = 'seller';
    let questionNum = 5;
    let disable = true;
    const fn1 = (naireType,dialogType,questionNum,disable) => {};
    
  9. 使用ES6简化代码

    (1)使用箭头函数取代小函数

    (2)使用ES6的class

    (3)字符串拼接

    (4)块级作用域变量

在这里插入图片描述

参考书籍:《高效前端:Web高效编程与优化实践》

标签:return,作用域,书写,JavaScript,优化,类型,num,var,true
From: https://blog.csdn.net/qq_44186810/article/details/139872291

相关文章

  • 【JavaScript脚本宇宙】革新前端样式:CSS-in-JS库大比拼与最佳实践
    解锁响应式设计的潜力:使用CSS-in-JS库构建动态样式前言随着前端技术的发展,CSS-in-JS(CSSinJavaScript)逐渐得到开发者的青睐。它通过将CSS样式定义在JavaScript中,利用JavaScript的强大特性,实现了更灵活、动态的样式管理方式。本文将介绍几个流行的CSS-in-JS库,包括styled-c......
  • Android面试题:App性能优化之Java和Kotlin常见的数据结构
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点Java常见数据结构特点ArrayListArrayList底层是基于数组实现add、删除元素需要进行元素位移耗性能,但查找和修改块适合不需要频繁添加删除的链表LinkedList是双......
  • Javascript 教程
     JavaScript 输出使用 window.alert() 弹出警告框<!DOCTYPEhtml><html><head><metacharset="UTF-8"> <title>使用window.alert()弹出警告框</title></head><body> <script>window.alert(&qu......
  • 数据库优化及慢查询日志分析
    在数据库调优中,我们的目标就是响应时间更快,吞吐量更大。利用宏观的监控工具和微观的日志分析可以快速帮我们找到调优的思路和方式。一、数据库服务器的优化步骤1、观察服务器状态是否存在周期性波动(双11,618等),如果是执行2,否跳到3;2、加缓存,更改缓存失效策略。如果解决则......
  • 模拟退火算法(Simulated Annealing, SA)及微优化(入门)
    模拟退火算法(SimulatedAnnealing,SA)是一种启发式搜索算法,常用于解决优化问题。该算法以概率的方式搜索问题的解空间,并在搜索过程中逐渐降低温度,从而有助于找到全局最优解。模拟退火算法的基本原理如下:初始化:随机生成一个初始解。迭代过程:生成一个新解,这个新解通过一......
  • 架构师必知的11种API性能优化方法
    前言接口性能优化是后端开发人员经常碰到的一道面试题,因为它是一个跟开发语言无关的公共问题。这个问题既可以很简单,也可以相当复杂。有时候,只需要添加一个索引就能解决。有时候,代码需要进行重构。有时候,必须增加缓存。有时候,需要引入一些中间件,例如消息队列(MQ)。有时候,需......
  • MCT Self-Refine:创新集成蒙特卡洛树搜索 (MCTS)提高复杂数学推理任务的性能,超GPT4,使用 L
    ......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript旅游网站
    HTML+CSS+JS【旅游网站】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript影视网站(爱美剧)
    HTML+CSS+JS【影视网站】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • DVWA 靶场 JavaScript 通关解析
    前言DVWA代表DamnVulnerableWebApplication,是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。DVWA提供了一系列的漏洞场景和练习环境,用户可以通过......