javascript代码规范

语句规范

  • 所有语句后面需要有";"(*)
  • If、for、do、while 等所有循环体和判断体的执行语句部分都用“{}”括起来,尽量不要省略花括号(不强制,单行时可省略)。
  • 禁止在 return 关键字及要返回的表达式之间换行(*)。
  • 每行代码应少于 120 个字符,多于这个数量时,可考虑断行(不强制,一般不要过长)。
  • 使用 tabs (空格字符) 设置为 2 个空格(*)。

运算符

  • 使用严格的条件判断,用全等 === 代替 == , 用 !== 代替 != (不强制,视情况而定)。
  • 对于 if 语句,布尔值使用简写,但是对于字符串和数字进行比较()。
    if (isValid) {},if (name !== “”) {}
    if (list && list.length > 0) {} (
    )
  • 赋值操作符、比较操作符、算数操作符、逻辑操作符、位移操作符前后应当加空格(*)。
    const DOC_TITLE = “TENCENT-QQ”;
    let count = 6 + 5;
  • 避免不必要的三目表达式(不强制)。
    // bad
    const foo = a ? a : b;
    const bar = c ? true : false;
    const baz = c ? false : true;
    // good
    const foo = a || b;
    const bar = !!c;
    const baz = !c;

类型转换(不强制)

  • 字符类型,let count1 = String(count);
  • 数字类型,let val = Number(inputValue);
  • 布尔类型,let age = 0; let hasAge = !!age;

字符串

  • 1.使用单引号 ‘’ 定义字符串(*)。
  • 2.使用字符串模板代替字符串拼接(*)。

数组

  • 1.使用字面语法创建数组,const arr = []; 不要使用 new Array (*)。
  • 2.使用 Array#push 取代直接赋值来给数组添加项(*)。
  • 3.使用数组展开方法 … 来拷贝数组(不强制)。
    let arr1 = [a: 1, b: 2];
    let arr2 = […arr1];
  • 4.如果数组有多行,则在开始的时候换行,然后在结束的时候换行(*)。

对象

  • 使用字面语法来创建对象,如 const ITEM = {}, 不要使用 new Object (*)。
  • 对象的 key 和 value 相同时,使用属性值的缩写(*)。
    funciton getUserInfo (name,phone) {
    let userInfo = {
    name,
    phone
    };
    return userInfo;
    }

引用

  • 使用 const 定义你的所有引用;避免使用 var(*)。
  • 如果你必须重新赋值你的引用, 使用 let 代替 var(*)。

模块

  • 不要使用通配符导入,import _ as Storage from “Storage”;(_)。
  • 使用模块 (import/export)代替 require(*)。
  • 引入同一文件的多个模块(大于等于 2)时,每个模块独占一行(*)。
    import {
    get,
    getSessionStorage
    } from “common/utils/storage”;

属性

  • 使用常量访问属性时,使用点符号(*)。
    const LOGIN_FORM = { NAME: “Allen” }; // LOGIN_FORM.NAME ;
  • 使用变量访问属性时,使用 []表示法(*)。
    let obj = { title: “Allen” }; // obj[“title”]

  • 当有多行代码块的时候,使用大括号包裹(*)。
  • 如果你使用的是 if 和 else 的多行代码块,则将 else 语句放在 if 块闭括号同一行的位置(*)。
    if () {
    //
    } else {
    //
    }

常量

  • const 定义常量 (*)。
  • 常量采用全大写;const URL = “www.baidu.com”(*)。
  • 使用大写字母和下划线组合命名,const MAX_COUNT = 10; (*)。
  • 某些作为不允许修改值的变量认为是常量,全部字母都大写。例如:COPYRIGHT,PI (*)。

变量

  • 使用 let 来定义变量(*)。
  • 把 const 声明的放在一起,把 let 声明的放在一起(*)。
    const LOGIN, TITLE = “Allen”;
    let user = “chenxy”, manager = “asan”;
  • 变量名使用首字母小写,驼峰式命名,如 let maxCount = 10; let tableTitle = ‘loginTable’; (*)。

变量例外情况(不强制)

  • 作用域不大临时变量可以简写,比如:str,num,bol,obj,fun,arr。
  • 循环变量可以简写,比如:i,j,k 等。
  • 对于 jQuery 对象的变量使用 $ 作为前缀。如 const $sidebar = $(“.sidebar”);

函数命名

  • 禁止单字母的名字。如 function f() {} (*)。
  • 如果有函数名,则参数后空一格,参数前不空格; 例:function getMenu() {};
  • 如果无函数名,则参数前后各空一格,便:const getMenu = function () {};
  • 函数参数后各空一格。如 function getMenu() {}
  • 首字母小写,驼峰式命名,统一使用动词或者动词+名词形式; (*)。
    getVersion(),submitForm(),
    涉及返回逻辑值的函数可以使用 is,has,can,get,set,load,contains,should,show 等表示逻辑的词语代替动词,
    例如:isObject(),hasClass(),containsElment(),canRead()。
    函数方法常用的动词:
    get 获取/set 设置,
    add 增加/remove 删除
    create 创建/destory 移除
    start 启动/stop 停止
    open 打开/close 关闭,
    read 读取/write 写入
    load 载入/save 保存,
    create 创建/destroy 销毁
    begin 开始/end 结束,
    backup 备份/restore 恢复
    import 导入/export 导出,
    split 分割/merge 合并
    inject 注入/extract 提取,
    attach 附着/detach 脱离
    bind 绑定/separate 分离,
    view 查看/browse 浏览
    edit 编辑/modify 修改,
    select 选取/mark 标记
    copy 复制/paste 粘贴,
    undo 撤销/redo 重做
    insert 插入/delete 移除,
    add 加入/append 添加
    clean 清理/clear 清除,
    index 索引/sort 排序
    find 查找/search 搜索,
    increase 增加/decrease 减少
    play 播放/pause 暂停,
    launch 启动/run 运行
    compile 编译/execute 执行,
    debug 调试/trace 跟踪
    observe 观察/listen 监听,
    build 构建/publish 发布
    input 输入/output 输出,
    encode 编码/decode 解码
    encrypt 加密/decrypt 解密,
    compress 压缩/decompress 解压缩
    pack 打包/unpack 解包,
    parse 解析/emit 生成
    connect 连接/disconnect 断开,
    send 发送/receive 接收
    download 下载/upload 上传,
    refresh 刷新/synchronize 同步
    update 更新/revert 复原,
    lock 锁定/unlock 解锁
    check out 签出/check in 签入,
    submit 提交/commit 交付
    push 推/pull 拉,
    expand 展开/collapse 折叠
    begin 起始/end 结束,
    start 开始/finish 完成
    enter 进入/exit 退出,
    abort 放弃/quit 离开
    obsolete 废弃/depreciate 废旧,
    collect 收集/aggregate 聚集

注释

公共组件维护者需要在文件头部加上注释说明: (*)。
/**
*文件用途说明
*作者姓名、联系方式
*制作日期
*_/
大的模块注释方法 ( _ )。
//================
// 代码用途
//================
小的注释;
//代码说明
注释单独一行,不要在代码后的同一行内加注释,将单行注释放在需要注释的行的上方新行 ( * )。
//姓名
let name = “abc”;
let name =”abc”; //姓名` X

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/217795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员保密协议(软件开发岗位协议)

保密协议 甲方: 乙方: 鉴于:乙方愿意被聘用到甲方工作,双方经平等协商一致,自愿达成本保密协议。本协议涉及保密和知识产权的内容。 本协议所称任职期间,是指自甲乙双方劳动…

【flink番外篇】3、flink的source(内置、mysql、kafka、redis、clickhouse)介绍及示例(4)- redis -异步读取

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的…

四、mapbox搭载vue3测试demo(31-40)

demo地址https://bidding-m.gitee.io/mapbox-test/#/ 31、[添加] 热力图图层 32、[添加] 样式聚类 33、[添加] HTML聚类 34、[添加] 点动画效果 35、[添加] marker动

探索SSL证书的应用场景,远不止网站,还有小程序、App Store等

说到SSL证书,我们都知道其是用于实现HTTPS加密保障数据安全的重要工具,在建设网站的时候经常会部署SSL证书。但实际上,SSL证书的应用场景远不止网站,它还被广泛地应用到小程序、App Store、抖音广告、邮件服务器以及各种物联网设备…

用户管理第2节课 -- idea 2023.2 创建表

一、懂得 1.1编码格式是防止乱码的,utf-8是完全够的,那几个基本没差别 网址: 【IDEA——连接MySQL数据库,创建库和表】_idea中数据库-CSDN博客 这些是MySQL数据库中的一些术语,可以简单解释如下: 1、col…

【K8S 系列】认识k8s、k8s架构

一、什么是k8s? Kubernetes 简称 k8s,是支持云原生部署的一个平台,k8s 本质上就是用来简化微服务的开发和部署的,用于自动化部署、扩展和管理容器化应用的开源容器编排技术。对于传统的docker其实也提供了容器编排的技术docker-compose&…

SystemServer 进程启动过程

首语 SystemServer进程主要用于启动系统服务,诸如AMS、WMS、PMS都是由它来创建的。在系统的名称为"system_server",Android核心服务都是它启动,它是非常重要。 Zygote处理SystemServer进程 在 Zygote启动过程 文章中分析我们知道…

LeetCode算法练习:双指针计算三数之和和四数之和

通过双指针将时间复杂度降一个级别。 public class TOP {//15. 三数之和public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> res new ArrayList<>();int n nums.length;if (n < 3) {return res;}Arrays.sort(nums);//…

2023/12/12作业

思维导图 作业&#xff1a; 成果图 代码 #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { speechernew QTextToSpeech(this); ui->setupUi(this); //一直获取当前时间 idst…

SQL server创建联合索引

CREATE INDEX idx_dim_product_dt_ord ON [dim_product] (dt, ord); 在SQL Server中计算月同比和季度同步的SQL查询可能看起来像这样&#xff1a; ### 月度同比 月度同比是与前一年同一月份的数据进行比较。以下是一个基本的例子&#xff0c;假设我们有一个名为sales的表&…

1843_emacs中两个插件use-package以及org-bullets的使用

Grey 1843_emacs中两个插件use-package以及org-bullets的使用 全部学习汇总&#xff1a; GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used. 我个人的emacs的配置以及两个插件的使用由来 我自己现在也开始维护一个我自己的emacs配置&…

剑指offer(C++)-JZ49:丑数(算法-其他)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 题目描述&#xff1a; 把只包含质因子2、3和5的数称作丑数&#xff08;Ugly Number&#xff09;。例如6、8都是丑数&#xff0c;…

深入理解Golang中的goroutine 池

并发性是 Golang 的一项强大功能,它允许开发人员同时有效地管理多个任务。工作线程池的实现是并发的最常见用例之一。在本文中,我们将了解 Golang 中工作线程池的概念,讨论它们的好处,并引导您完成在下一个 Go 项目中实现工作线程池的过程。 什么是工作线程池? 工作线程…

【数据库】基于有效性确认的并发访问控制原理及调度流程,乐观无锁模式,冲突较少下的最优模型

使用有效性确认的并发控制 ​专栏内容&#xff1a; 手写数据库toadb 本专栏主要介绍如何从零开发&#xff0c;开发的步骤&#xff0c;以及开发过程中的涉及的原理&#xff0c;遇到的问题等&#xff0c;让大家能跟上并且可以一起开发&#xff0c;让每个需要的人成为参与者。 本专…

物流供应链数字化转型:国内领先服务商技术综合解析

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

TCP/IP详解——IP协议,IP选路

文章目录 1. IP 编址1.1 IP 报文头部1.2 进制之间的转换1.3 网络通信1.4 有类 IP 编制的缺陷1.5 变长子网掩码1.6 网关1.7 IP 包分片1.7.1 IP 包分片实例1.7.2 IP 分片注意事项1.7.3 Wireshark 抓取 IP 包分片1.7.4 OmniPeek 抓取 IP 包分片1.7.5 ICMP 不可达差错&#xff08;需…

【词云图】从excel和从txt文件,绘制以句子、词为单位的词云图

从excel和从txt文件&#xff0c;绘制以句子、词为单位的词云图 写在最前面数据说明&结论 从txt文件&#xff0c;绘制以句子、词为单位的词云图自我介绍 从excel&#xff0c;绘制以句子、词为单位的词云图读取excel绘制以句子、词为单位的词云图文章标题 写在最前面 经常绘…

GEE机器学习——利用梯度决策树Gradient Tree Boost 方法(GBDT/GBRT)进行土地分类和精度测试

Gradient Tree Boost 方法的具体介绍 梯度提升树(Gradient Tree Boost)是一种集成学习方法,通过串行训练多个决策树来解决回归和分类问题。它通过迭代的方式不断优化模型预测结果,使得每一棵树能够纠正前一棵树的预测误差。 Gradient Tree Boost方法的具体步骤如下: 1. …

小程序时代的机遇:开发成功的知识付费平台

知识付费平台不仅为知识创作者提供了广阔的变现渠道&#xff0c;同时也为用户提供了更为个性化、精准的学习体验。本篇文章&#xff0c;小编将为大家讲解知识付费小程序开发相关的知识。 一、小程序时代的背景 知识付费作为小程序领域中的“大热门”&#xff0c;有着非常高的…

WT2605C-32N语音芯片:跑步机音乐新搭档,畅享健康奔跑旋律

在现代健身领域&#xff0c;唯创知音的WT2605C-32N蓝牙音频MP3音乐解码语音芯片IC作为音乐解码的新搭档&#xff0c;为跑步机带来了更为智能、富有音乐节奏的健康奔跑体验&#xff0c;引领跑步健身的新时代。 1. 蓝牙连接&#xff0c;自由音乐选择 跑步机启动时&#xff0c;W…