博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS编程最佳实践
阅读量:5051 次
发布时间:2019-06-12

本文共 1802 字,大约阅读时间需要 6 分钟。

  最近花了一周时间把《编写可维护的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.已经存在的对象,(别人创建的对象), 不覆盖方法, 不新增方法, 不删除方法。
 
 

转载于:https://www.cnblogs.com/zhongweian/p/5625030.html

你可能感兴趣的文章
双链表
查看>>
java学习笔记之String类
查看>>
pymysql操作mysql
查看>>
Linux服务器删除乱码文件/文件夹的方法
查看>>
牛腩记账本core版本源码
查看>>
Word Break II
查看>>
UVA 11082 Matrix Decompressing 矩阵解压(最大流,经典)
查看>>
jdk从1.8降到jdk1.7失败
查看>>
一些关于IO流的问题
查看>>
mongo备份操作
查看>>
8 -- 深入使用Spring -- 3...1 Resource实现类InputStreamResource、ByteArrayResource
查看>>
硬件笔记之Thinkpad T470P更换2K屏幕
查看>>
一个关于vue+mysql+express的全栈项目(六)------ 聊天模型的设计
查看>>
【知识库】-数据库_MySQL 的七种 join
查看>>
.net 写文件上传下载webservice
查看>>
noSQL数据库相关软件介绍(大数据存储时候,必须使用)
查看>>
iOS开发——缩放图片
查看>>
HTTP之URL的快捷方式
查看>>
满世界都是图论
查看>>
配置链路聚合中极小错误——失之毫厘谬以千里
查看>>