JS编程最佳实践
最近花了一周时间把《编写可维护的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编程最佳实践的更多相关文章
- 思索 p5.js 的最佳实践
思索 p5.js 的最佳实践 本文写于 2020 年 12 月 18 日 p5.js 是一个 JavaScript 库,用于为艺术家.设计师提供更容易上手的创意编程. 它有着完整的一套基于 Canva ...
- Java 网络编程最佳实践(转载)
http://yihongwei.com/2015/09/remoting-practice/ Java 网络编程最佳实践 Sep 10, 2015 | [Java, Network] 1. 通信层 ...
- Atitit.angular.js 使用最佳实践 原理与常见问题解决与列表显示案例 attilax总结
Atitit.angular.js 使用最佳实践 原理与常见问题解决与列表显示案例 attilax总结 1. 本文范围 1 2. Angular的优点 1 2.1. 双向数据绑定 1 2.2. dsl ...
- vue.js+boostrap最佳实践
一.为什么要写这篇文章 最近忙里偷闲学了一下vue.js,同时也复习了一下boostrap,发现这两种东西如果同时运用到一起,可以发挥很强大的作用,boostrap优雅的样式和丰富的组件使得页面开发变 ...
- C 编程最佳实践(书写风格)
简介本文是为了满足开发人员的需要而写的.我们总结了一套指南,无论作为开发人员还是顾问,这些指南多年来一直都很好地指导着我们,我们把它们作为建议提供给您,希望对您的工作有所帮助.您也许不赞同其中的某些指 ...
- 一些通过SAP ABAP代码审查得出的ABAP编程最佳实践
1. 这两个IF ELSE分支里检测的条件其实逻辑上来说都是同一类,应该合并到一个IF分支里进行检查: It is an expensive operation to open a file in a ...
- jQuery编程最佳实践笔记
优化选择器 选择器优化已经不如从前那么重要,因为更多的浏览器实现了document.querySelectorAll()方法,所以选择的重担由jQuery转移到了浏览器. 但是仍然有一些技巧是需要 ...
- Shell 脚本编程最佳实践
前言 由于工作需要,最近重新开始拾掇shell脚本.虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看.而且当我在看其他人写的脚本的时候,总觉得难以阅读.毕竟shell脚本这个东 ...
- require.js 最佳实践【转】
https://www.cnblogs.com/digdeep/p/4607131.html require.js是一个js库,相关的基础知识,前面转载了两篇博文:Javascript模块化编程(re ...
随机推荐
- 如何判断CPU的位数
CPU是16位,32位,还是64位,主要指的是数据总线(data bus)有多少位,16位数据总线表示CPU一次可以从内存取2个byte的数据,32位数据总线表示CPU一次可以从内存取4byte数据, ...
- 50个必备的实用jQuery代码段+ 可以直接拿来用的15个jQuery代码片段
50个必备的实用jQuery代码段+ 可以直接拿来用的15个jQuery代码片段 本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助.其中的一些代码段是从j ...
- zabbix之1监控概念
1.通过通用的snmp监控,无需代理端 2.通过snmp代理 snmp代理的工作原理:在被监控端设置代理,代理不断的获取本地数据,而管理端定期通过代理获取监控数据. snmp目前有v1,v2,v3三种 ...
- 利用matlab实现以下功能:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序思路: 对n进行分解质因数,应先找到一个最小的质数k,从2开始,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可. (2)如果n不等于k,则应打印出k的 ...
- 当浏览器输入url的时候发生了什么
当用户在浏览器地址栏里面输入一个url的时候.接下来会发生一系列的过程.首先是DNS解析, 将域名转换成对应的IP地址,之后浏览器与远程Web服务器通过TCP三次握手协商来建立一个TCP/IP连接.该 ...
- windows环境下搭建Cocos2d-X开发环境
最近终于有时间可心搞搞自己的东西了,呵呵,那就开始做个手机小游戏给孩子玩吧. 首先必须选定开发的框架,移动终端开源的游戏框架貌似不多,找来找去也就这个了,名字简单Cocos2d-X,是Cocos2d国 ...
- 场景示例 Nginx 访问日志
http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr [$ti ...
- 【转】 怎么刷入BOOT.IMG(刷机后开机卡在第一屏的童鞋请注意)-------不错不错
原文网址:http://bbs.gfan.com/android-3440837-1-1.html 之前呢,有好多机油问我关于刷机卡屏的问题,我解答了好多,但一一解答太费事了,在这里给大家发个贴吧.其 ...
- bzoj1637 [Usaco2007 Mar]Balanced Lineup
Description Farmer John 决定给他的奶牛们照一张合影,他让 N (1 ≤ N ≤ 50,000) 头奶牛站成一条直线,每头牛都有它的坐标(范围: 0..1,000,000,000 ...
- 一些.Net面试题 (BS 方向)
http://www.cnblogs.com/PurpleTide/archive/2012/03/10/2389496.html 解决方案和思路类: 设计和策略: 1.有一个网站的中购买功能, 假设 ...