编写可维护的JavaScript-编程风格

2023-05-16

可以使用JSHint对代码进行检查。代码规范可以是使开发更高效。

基本的格式化

缩进层级

  1. 使用制表符进行缩进。Tab
  2. 使用空格进行缩进。

语句结尾

是不是使用分号看个人喜好,书上推荐是不使用;但是jshint等工具,还有Google 的JavaScript风格指南推荐使用。

行的长度

单行长度限定在80个字符之内。
1. Java规定单行长度不超过80个字符;
2. Android不超过100个字符;
3. Ruby规定不超过80个字符;
4. Python不超过79个字符;
所以在JavaScript中,推荐单行长度限定在80个字符之内。

换行

这一段挺多的,我就写几个实例吧。

 var tasks = [openDocument, writeText, closeDocument, updateUIcloseDocument,writeText, 
             updateUIcloseDocument, updateUI];

if (options & OPTION_D||tioDay===20|start!==1000&&
        (window.t.s(num))) {
        //do something
        console.log(options);
    }

空行

书上建议

  • 在方法之间(我比较认同);
  • 在方法中的局部变量和第一条语句之间。
  • 在多行或单行注释之前;
  • 在方法内的逻辑片段之间传入空行,提高可读性。
    本人建议慎用空行

命名

小驼峰命名(大家都知道的)myName

变量和函数

函数名前应该是动词:getCount;单纯名词是变量:myName。
count、length、size尽量是数字;
name、title、message尽量是字符串;
以can、has、is尽量是布尔。
set开头尽量来保存一个值。

常量

大写字母和下划线来表示常量 var MAX_COUNT=10;

构造函数

使用大驼峰命名法。

    function Person(name) {
        this.name=name;
    }
    Person.prototype.myName=function () {
        alert(this.name)
    }
    var me=new Person("Jack")

字符串和数字

字符串单引号和双引号看你自己的喜好,数字10进制,且如果有小数部分,请写全;不要10..23这种。

null

使用场景
- 用来初始化一个变量,这个变量可能赋值为一个对象。
- 用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象
- 当函数的参数期望是对象时,做参数使用;/**/
- 当函数的返回值期望是对象的时候。作返回值使用。
不要使用场景

  • 不要使用null来检查是否传入了某个参数。
  • 不要用null来检测一个未初始化的变量。

undefined

没有被初始化的变量都有一个初始值,即undefined;表示这个变量等待被赋值。

//b未被声明
    var f;
    console.log(typeof f);
    console.log(typeof b);

建议此时将f赋值为null;然后typeof 运算null之后,返回“object”,这样可以和undefined区分了。

注释

单行注释

//
  • 独占一行,用来解释下一行代码。这行注释之前总是有一个空行,且缩进层级和下一行代码保持一致。
  • 在代码行的尾部注释,代码结束到注释之间至少有一个缩进。

多行注释

/*   */

多行的时候,要加*,且有空格

    /*
    * 78787 
    * 和哦窘迫
    */

文档注释

     /**
     @param :一个对象参数
     @param :一个对象参数
     **/
  • 对方法、期望的参数和可能的返回值添加注释。
  • 对自定义类型和期望的参数添加注释。
  • 如果一个对象包含一个或多个附带文档注释的方法,那么这个对象也应当适当的针对文档生成工具添加文档注释。

语句和表达式

所有的块语句都应当使用花括号:
- if
- for
- while
- do…while
- try…catch…finally

for循环

注意break;和continue的使用。

for-in循环

最好使用hasOwnProperty();方法来为for-in循环过滤出实例属性。

    var obj={value: 310, name: '邮件营销'};
    var item;
    for(item in obj){
        if(obj.hasOwnProperty(item)){
            console.log(item);
            console.log(obj[item]);
        }
    }

变量、函数、运算符

变量声明

变量声明提前

    function dos() {
        var res=10+val;
        var val=10;
        return res;
    }

此时由于变量声明提前;打印出来的是NaN;其中的原因是浏览器自己理解为

    function dos() {
        var res;
        var val;
        res=10+val;
        val=10;
        return res;
    }

建议尽量将变量声明放到最顶部。

函数声明

  1. 先声明函数,在使用函数。
  2. 函数声明不要在条件语句的内部。

严格模式避免放入到全局作用域中。
尽量使用====!==而不是==和!=;


eval();function();setInterval(); setTimeout()传入字符串来立即生成js代码去执行的,尽量避免使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编写可维护的JavaScript-编程风格 的相关文章

  • 微信小程序从入门到放弃(四)

    swiper组件的使用 官方链接 swiper官方链接 可以设置上下滚动 vertical 为true xff0c 可以设置为上下滚动 xff1b false左右滚动 xff1b 无缝滚动 circular 为true xff0c 可以设置
  • 微信小程序从入门到放弃(五)

    一 字体的大小 font size 像素单位rpx与px的差别 lt view style 61 34 font size 30px 34 gt 我是汉字font size 30px lt view gt br lt view style
  • 微信小程序从入门到放弃(六)

    微信小程序wx hideLoad 安卓不兼容问题 当频繁进行数据交互的时候 xff0c 加载动画 xff0c 在安卓上的时候 xff0c hideLoad xff0c 不能执行 xff0c 使showLoad xff08 xff0c 一直在
  • WIN10的MD5命令

    windows方法 xff1a win键 43 r键输入cmd调出命令行 输入 xff1a 查看MD5值 xff1a certutil hashfile 文件名 MD5 查看 SHA1 certutil hashfile 文件名 SHA1
  • css3样式效果

    一 盒子内圆角 效果图 css样式代码 xff1a width 300px br height 200px br background radial gradient circle at top left transparent 28px
  • 3D背景图动画阴影效果

    先看效果图 原理rotate的使用 当鼠标放到图片的一角处的时候 xff0c 实现该处向下坍缩的效果 xff0c 即用的是rotate的3D属性 xff0c 此时的图片向相应的方向的进行偏转 xff0c 偏转的角度x xff0c y如下图所
  • Vue遇到的bug-01(vue引擎模板报错)

    vue结合webpack的使用 01 报错信息 xff1a 如下图 xff08 配置文件格式错误 xff09 错误的代码 xff1a 如下图 报错信息显示的是配置文件错误 xff08 报错信息的最后一句话是 loaders should b
  • 百度地图API支持HTTPS

    百度地图怎么样才能支持API支持HTTPS 报错信息如下 xff1a Mixed Content The page at https www c 8 com public admin index index html was loaded
  • 数组Array、对象Object、json格式常用的方法小结。

    一 对象Object常用方法 1 初始化方法 var obj 61 var obj 61 new obj var obj 61 Object create null 2 添加元素的方法 dic key 61 value 3 删除key的方法
  • 微信小程序动画特效

    效果 代码见下 xff1a 启动的一瞬间字体在跳动 xff0c 星空在不停的旋转 wxml代码 lt pages welcome welcome wxml gt br lt view class 61 34 stars 34 gt br l
  • 放大镜插件etalage的使用方法

    效果图 如果有人需要etalage的话 xff0c 可以给我留言 xff1b 官方链接Etalage 下载位置 xff1a github 1 使用方法 安装js xff0c css xff0c 文件 xff0c 分别是 xff1a 1 xf
  • 日期插件layDate的使用

    效果图 官方链接 1 layui中的laydate 官方链接 2 贤心的layui 使用说明 只需引入 laydate js 即可HTML结构 lt input span class hljs keyword type span 61 sp
  • jQuery实现可以编辑的表格实例详解

    效果图 点击单个可以进行修改 点击修改所有的表格都可以进行修改 点击保存所有的数据可以获取并打印出来 本人demo需要引入jq文件 代码见如下 xff08 有详细的注解 xff09 span class hljs doctype lt DO
  • input上传图片并预览

    首先说一下input 大家都知道上传文件 xff0c 图片是通过input 的file进行上传的 1 首先是样式 大家都知道input在HTML的代码为 lt input type 61 34 file 34 gt xff1b 在页面的样式
  • PyQt5 使用QT Desinger 布置QChartViewer

    QChartView原来是QT公司的商用包 xff0c 后来开源了 但是相对来说文档说明少 最近想利用QT DESINGER直接拖拉拽在GUI窗体里放QChartViewer xff0c 网上参考部分资料后顺利实现 xff0c 现留作备忘
  • js拳皇特效

    js拳皇特效 效果图 很简单的特效 xff0c 运用了面向对象 xff0c 原型等简单的方法 废话不多说 xff0c 上代码 xff1a span class hljs tag lt span class hljs title script
  • 微信小程序从入门到放弃(七)

    scroll view不显示滚动条 新版本的微信小程序已经把scroll view的滚动条默认为隐藏了 xff0c 而有的业务逻辑需要把滚动条显示出来 xff1b 所以 xff1a 本人查了好久终于找到了解决的方案 xff0c 就是找到滚动
  • cookie+bootstrap-table+抽奖概率算法

    span class hljs comment 获得cookie span span class hljs function span class hljs keyword function span span class hljs tit
  • Vue新手入门-1

    基于vue2 5 9版本 数据绑定v bind 像img这样的标签 xff0c 直接在src里面写 lt img src 61 34 picimg 34 alt 61 34 34 gt xff1b 是不正确的 xff0c 这里需要用v bi
  • Vue新手入门-2

    基于vue2 5 9版本 生命周期vue1 0 created gt beforeCompile gt compiled gt ready gt attached gt detached gt beforeDestroy gt destro

随机推荐

  • cropper.js 裁剪图片并上传(文档翻译+demo)

    官网http fengyuanchen github io cropper 文档https github com fengyuanchen cropper blob master README md v3 x版本 引入 43 使用 span
  • Vue新手入门-3

    基于vue2 5 9版本 定义全局组件 xff08 3种写法 xff09 首先声明一个new Vue xff08 xff09 xff1b 然后在js里面编写 xff1b 最后把注册的组件放入进去即可 xff1b 写法 1 span clas
  • Vue遇到的bug-02(vue中修改了数据但视图无法更新的情况)

    基于vue2 5 9版本 vue中修改了数据但视图无法更新的情况 最近的项目需要用vue处理数组和json的数据类型发现一些问题在这里简单的列举一下 xff1b 因为 JavaScript 的限制 xff0c Vue js 不能检测到下面数
  • Vue遇到的bug-03(VUE之使用高德地图API)

    步骤一 xff1a 申请高德地图密钥 xff1b 步骤二 xff1a 在index html中添加高德地图JavaScript API接口 xff1b span class hljs tag lt span class hljs title
  • 纯css模仿微信switch开关按钮

    业务需要需要做一个微信switch开关 效果图 html样式 span class hljs tag lt span class hljs title label span gt span span class hljs tag lt sp
  • SDN实验环境的搭建UBUNTU 14LTS+MININET+RYU

    RYU是NTT主推的开源SDN 控制器项目 xff0c 采用PYTHON语言 因为工作需要 xff0c 进行了一些尝试 xff0c 现将基础环境的搭建和相关参考资料记录如下 1 系统选择UBUNTU 14 LTS xff0c 采用VMWAR
  • 移动端开发小记

    meta 在我们开发移动端的时候 xff0c 首先在head里面写入如下的代码 span class hljs tag lt span class hljs title meta span span class hljs attribute
  • less 简单用法

    less 示例 声明变量 用 64 span class token atrule span class token rule 64 man color span span class token punctuation span f0f0
  • javascript性能优化(1)

    加载 1 javascript的第一条定律 xff1a 将脚本 xff08 js xff09 放到底部 2 每一个http请求都会造成额外的性能负担 xff0c 下载一个100k的文件比下载四个25k的文件要快 xff1b 减少引用外部脚本
  • javascript性能优化(2)

    数据访问 四种基本数据类型 xff1a 1 直接量 xff1a 仅是自身不存储于特定位置 包括 xff1a 字符串 数字 布尔值 对象 数组 函数 正则表达式 xff0c 具有特殊意义的空值 xff0c 以及未定义 2 变量 xff1a v
  • javascript性能优化(3)

    DOM编程 1 文档对象模型 xff08 DOM xff09 访问的dom越多 xff0c 代码的执行速度就越慢 2 innerHtml和DOM方法 更改dom的时候 xff0c 使用innerHTML xff08 字符串拼接 xff09
  • javascript性能优化(4)

    算法和流程控制 代码整体结构是执行速度的决定因素之一 代码量少不一定运行速度快 xff0c 代码量多也不一定运行速度慢 性能损失与代码组织方式和具体问题解决办法直接相关 循环 1 减少对象成员和数组项查找的次数 span class hlj
  • javascript性能优化(5)

    字符串和正则表达式 span class hljs keyword str span 61 span class hljs string 34 a 34 span 43 span class hljs string 34 b 34 span
  • javascript性能优化(6)

    响应接口 长运行脚本 xff08 500万以上 xff09 最好的办法就是避免他们 接口最好在100毫秒响应用户输入 用定时器让出时间片 当一些JavaScript任务不能再100ms之内完成的时候 xff0c 最好的办法就是 xff1a
  • 一些简单的JavaScript加密/解密

    UTF8编码与解码 xff1a span class hljs function span class hljs keyword function span span class hljs title encodeUTF8 span spa
  • git的基本操作

    新上手一个项目 xff0c 难免会忘记git的一些操作指令 xff0c 于是趁现在工作不是很忙 xff0c 自己便整理一下git的一些基本指令 git拉取远程数据 xff0c 并建立新的分支 git clone url 克隆远程仓库代码 g
  • git clone 加速方法

    查询github global ssl fastly net和github com的IP 安装查询工具 xff1a sudo apt install dnsutils nslookup github com nslookup github
  • javascript性能优化(7)

    Ajax 异步 JavaScript 和 XML Ajax 是高性能 JavaScript 的基石 它可以通过延迟下载大量资源使页面加载更快 它通过在客户端和服 务器之间异步传送数据 xff0c 避免页面集体加载 它还用于在一次 HTTP
  • javascript性能优化(8)

    Programming Practices 编程实践 避免二次评估 JavaScript 与许多脚本语言一样 xff0c 允许你在程序中获取一个包含代码的字符串然后运行它 有四种标准 方法可以实现 xff1a eval xff0c Func
  • 编写可维护的JavaScript-编程风格

    可以使用JSHint对代码进行检查 代码规范可以是使开发更高效 基本的格式化 缩进层级 使用制表符进行缩进 Tab使用空格进行缩进 语句结尾 是不是使用分号看个人喜好 xff0c 书上推荐是不使用 xff1b 但是jshint等工具 xff