最近花了一周时间把《编写可维护的js》 阅读了一遍, 现将全书提到的JS编程最佳实践总结如下, 已追来者!

    1.return 之后不可直接换行, 否则会导致ASI(自动分号插入机制)会在return 后插入一个分号。

    2.一行语句最多不超过80个字符, 如果超过则应该在运算符后换行,并且追加两个缩进。

    3.采用驼峰式命名,变量前缀为名词如:myName 函数应该以动词开始如:getName,常量应该以大写字母命名,如:MAX_COUNT, 构造函数首字母大写。

    4.数字的写法: 整数:count =10 小数 count =10.0; 十六进制写法0xA2 科学计数法1e23  不推荐使用八进制写法。

    5.如下场景应该使用null:

        1.  为可能赋值为对象的变量初始化。

        2. 在函数中, 如果参数期望是对象, 当做参数传入, 返回值同理。

    6.如下场景不应该使用null:

        1.检测参数是否传入。

        2.检测未初始化的变量。

    7.null应该当做是对象的占位符。

    8.undefine应该避免使用。

    9.声明对象和数组使用字面量直接量。如 var arry =[1,2,3];

    10.case语句应该以break结尾。

    11.禁止使用with语句。

    12.fo-in循环会遍历对象以及对象原型的属性,所以应该使用hasOwnProperty()来过滤掉原型属性。如果需要遍历原型的属性, 应该加上注释。

    13.数组应该使用 for循环 遍历。

    14.尽量避免变量提升。

    15.不要使用全局的严格模式, 尽量在函数中使用。

    16.推荐使用 === 来比较

    17.禁止使用eval() 和Function

    18.禁止使用 String Name 这样的原始包装类型来创建新对象。 例如 var name = new String("name");

    19.当需要通过JS来修改样式时, 应该操作className。推荐使用html5的方法:ele.classList.add("className");

    20.避免使用全局变量。推荐以一下几种方式替代:

        1.创建唯一的全局对象。

        2.创建命名空间

        3.以函数形式封装起来。

    21.事件处理有两个原则:

        1.隔离应用逻辑

        2.不要分发事件对象。

        用例:

 var myApp = {
handlClick:function(event)
{
this.show(event.clientX, event.clientY);//杜绝分发事件对象
}
}; addListener(ele,"click, function(event){
myApp.handlClick(event); //与应用层隔离
}

    22.避免 与null比较, 除非确实需要与null比较。应该使用typeof, typeof也不应该对null进行检测。

    23.检测引用值应该使用value instanceof constructor

    24.检测数组使用isArry()方法

    25.检测属性应该使用in 关键字  if("cout" in object){}; ie8以下不支持 可以使用hasOwnProperty();

    26.配置数据应该与应用程序抽离出来, 最好形成单独的配置文件。

    27.多人开发项目中对于对象的处理遵循以下几条原则:

        1.如果不是自己创建的对象,不要修改他们, 包括:原生对象, DOM对象, BOM对象, 类库对象。

        2.已经存在的对象,(别人创建的对象), 不覆盖方法, 不新增方法, 不删除方法。

JS编程最佳实践的更多相关文章

  1. 思索 p5.js 的最佳实践

    思索 p5.js 的最佳实践 本文写于 2020 年 12 月 18 日 p5.js 是一个 JavaScript 库,用于为艺术家.设计师提供更容易上手的创意编程. 它有着完整的一套基于 Canva ...

  2. Java 网络编程最佳实践(转载)

    http://yihongwei.com/2015/09/remoting-practice/ Java 网络编程最佳实践 Sep 10, 2015 | [Java, Network] 1. 通信层 ...

  3. Atitit.angular.js 使用最佳实践 原理与常见问题解决与列表显示案例 attilax总结

    Atitit.angular.js 使用最佳实践 原理与常见问题解决与列表显示案例 attilax总结 1. 本文范围 1 2. Angular的优点 1 2.1. 双向数据绑定 1 2.2. dsl ...

  4. vue.js+boostrap最佳实践

    一.为什么要写这篇文章 最近忙里偷闲学了一下vue.js,同时也复习了一下boostrap,发现这两种东西如果同时运用到一起,可以发挥很强大的作用,boostrap优雅的样式和丰富的组件使得页面开发变 ...

  5. C 编程最佳实践(书写风格)

    简介本文是为了满足开发人员的需要而写的.我们总结了一套指南,无论作为开发人员还是顾问,这些指南多年来一直都很好地指导着我们,我们把它们作为建议提供给您,希望对您的工作有所帮助.您也许不赞同其中的某些指 ...

  6. 一些通过SAP ABAP代码审查得出的ABAP编程最佳实践

    1. 这两个IF ELSE分支里检测的条件其实逻辑上来说都是同一类,应该合并到一个IF分支里进行检查: It is an expensive operation to open a file in a ...

  7. jQuery编程最佳实践笔记

    优化选择器   选择器优化已经不如从前那么重要,因为更多的浏览器实现了document.querySelectorAll()方法,所以选择的重担由jQuery转移到了浏览器. 但是仍然有一些技巧是需要 ...

  8. Shell 脚本编程最佳实践

    前言 由于工作需要,最近重新开始拾掇shell脚本.虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看.而且当我在看其他人写的脚本的时候,总觉得难以阅读.毕竟shell脚本这个东 ...

  9. require.js 最佳实践【转】

    https://www.cnblogs.com/digdeep/p/4607131.html require.js是一个js库,相关的基础知识,前面转载了两篇博文:Javascript模块化编程(re ...

随机推荐

  1. JSON的parse()方法

    JSON方法也可以接受另外的一个参数,作为还原函数. 实例: var book = { title:"JavaScript Learn", author:["wang&q ...

  2. pymssql文档

    原文地址 http://pymssql.org/en/latest/ref/_mssql.html _mssql module reference pymssql模块类,方法和属性的完整文档. Com ...

  3. 轻松实现HTML5时钟(分享下自己对canvas的理解,原来没你想像的那么难哦)

    Hey,guys! 让我们一起用HTML5实现一下简易时钟吧! 接触canvas时, 我突然有一种非常熟悉的感觉------canvas的部分的功能其实和Photoshop中的 钢笔工具 是一样的.所 ...

  4. sitemap.xml 静态和动态生成页面 shopnc二次开发 动态生成sitemap.xml

    Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页.最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间.更改的 ...

  5. deepin软件中心打不开

    想体验下deepin新特性,就修改了软件源为test版本,结果就坑了,软件中心打不开了...无奈之下,看了下论坛,找到了官方源地址,然后替换. sudo gedit /etc/apt/sources. ...

  6. postgresql数据库导入导出

    在shell中用命令pg_dump将数据库data1导出到一个文件中 pg_dump -d data1 -f test.txt 或者 pg_dump -d data1 > test.sql 然后 ...

  7. c++基础五个题(二)

    一.c++中static的作用 1.隐藏:当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性,static函数作用就是为了隐藏 2.可以保持变量的持久:存储在静态数据区的变 ...

  8. 用lsb_release -a 查看linux版本

    1.要通过yum 安装上这个命令的软件包 yum -y install redhat-lsb 2.lsb_release -a 查看linux版本信息

  9. [TYVJ] P1065 津津的储蓄计划

    津津的储蓄计划 背景 Background NOIP2004 提高组 第一道   描述 Description     津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300元钱,津津会预算这个月 ...

  10. jQuery EasyUI求助

    最近在学习easyui的时候遇到了一个很奇怪的问题,在使用datagrid组件的时候,我想自定义一个列,用来显示一个查看详细页面的链接,但是当这个列不是最后一列的时候,链接一直显示不出来,求大神们指点 ...