• 命名规范。
常量名    全部大写并单词间用下划线分隔    如:CSS_BTN_CLOSE、TXT_LOADING对象的属性或方法名    小驼峰式(little camel-case)    如:init、bindEvent、updatePosition    示例:Dialog.prototype = {                init: function () {},                bindEvent: function () {},                updatePosition: function () {}                …                };类名(构造器)    -->小驼峰式但首字母大写    -->如:Current、DefaultConfig函数名    -->小驼峰式    -->如:current()、defaultConfig()变量名    -->小驼峰式    -->如:current、defaultConfig私有变量名    -->小驼峰式但需要用_开头    -->如:_current、_defaultConfig变量名的前缀    -->续
  • 代码格式。
"()"前后需要跟空格"="前后需要跟空格","后面需要跟空格JSON对象需格式化对象参数if、while、for、do语句的执行体用"{}"括起来

“{}”格式如下。

if (a==1) {    //代码};

避免额外的逗号。

var arr = [1,2,3,];

for-in循环体中必须用hasOwnProperty方法检查成员是否为自身成员,避免来自原型链上的污染。

  • 长语句可考虑断行。
TEMPL_SONGLIST.replace('{TABLE}', da['results'])    .replace('{PREV_NUM}', prev)    .replace('{NEXT_NUM}', next)    .replace('{CURRENT_NUM}', current)    .replace('{TOTAL_NUM}', da.page_total);

为了避免和JSLint的检验机制冲突,“.”或“+”这类操作符放在行尾。

TEMPL_SONGLIST.replace('{TABLE}', da['results']).    replace('{PREV_NUM}', prev).    replace('{NEXT_NUM}', next).    replace('{CURRENT_NUM}', current).    replace('{TOTAL_NUM}', da.page_total);

如果模块代码中,使用其它全局变量想跳过JSLint的检查,可以在该文件中加入/*global*/声明。

/*global alert: true, console: true, top: true, setTimeout: true */
  • 使用严格的条件判断符。用===代替==,用!==代替!=,避免掉入==造成的陷阱,在条件判断时,这样的一些值表示false。
nullundefined与null相等字符串''数字0NaN

在==时,则会有一些让人难以理解的陷阱。

(function () {    var undefined;    undefined == null; // true    1 == true; //true    2 == true; // false    0 == false; // true    0 == ''; // true    NaN == NaN;// false    [] == false; // true    [] == ![]; // true})();

对于不同类型的 == 判断,有这样一些规则,顺序自上而下:

undefined与null相等一个是number一个是string时,会尝试将string转换为number尝试将boolean转换为number0或1尝试将Object转换成number或string

而这些取决于另外一个对比量,即值的类型,所以对于0、空字符串的判断,建议使用===
。===会先判断两边的值类型,类型不匹配时为false。

  • 下面类型的对象不建议用new构造。
new Numbernew Stringnew Booleannew Object //用{}代替new Array //用[]代替

引用对象成员用obj.prop代替obj[“prop”],除非属性名是变量。

  • 从number到string的转换。
/** 推荐写法*/var a = 1;typeof(a); //"number"console.log(a); //1var aa=a+'';typeof(aa); //"string"console.log(aa); //'1'/** 不推荐写法*/new String(a)或a.toString()

从string到number的转换,使用parseInt,必须显式指定第二个参数的进制。

/** 推荐写法*/var a = '1';var aa = parseInt(a,10);typeof(a); //"string"console.log(a); //'1'typeof(aa); //"number"console.log(aa); //1

从float到integer的转换。

/** 推荐写法*/Math.floor/Math.round/Math.ceil/** 不推荐写法*/parseInt

字符串拼接应使用数组保存字符串片段,使用时调用join方法。避免使用+或+=的方式拼接较长的字符串,每个字符串都会使用一个小的内存片段,过多的内存片段会影响性能。

/**推荐的拼接方式array的push、join*/var str=[],    list=['测试A','测试B'];for (var i=0 , len=list.length; i < len; i++) {    str.push( '<div>'+ list[i] + '</div>');};console.log(str.join('')); //<div>测试A</div><div>测试B</div>/** 不推荐的拼接方式+=*/var str = '',    list=['测试A','测试B'];for (var i = 0, len = list.length; i< len; i++) {    str+='<div>' + list[i] + '</div>';};console.log(str); //<div>测试A</div><div>测试B</div>
  • 尽量避免使用存在兼容性及消耗资源的方法或属性。
不要使用with,void,evil,eval_r,innerText
  • 注重HTML分离, 减小reflow, 注重性能。

收集整理了这些开发规范,感谢所有的原作者。

转载于:https://www.cnblogs.com/hubl/p/5743780.html

javaScript书写规范相关推荐

  1. Javascript 书写规范

    变量和函数名采用驼峰命名规范,首写字母小写 常量全部使用大写,并以"_"连接单词 尽量使用动词+名词的命名方式,如:"getList"."setSty ...

  2. html css js书写规范

    无论是从技术角度还是开发视角,对于web前端开发规范文档都有一定规范,本文就css3和html5的发展前景总结了一系列的web开发文档,仅供大家参考. 规范目的: 为提高团队协作效率, 便于后台人员添 ...

  3. 论代码书写规范的重要性——分享一篇良好的代码书写规范,从小白开始培养..(表示太难了吧)

    Web前端开发规范手册 文章目录 一.规范目的 1.1 概述 - 1 二.文件规范 2.1 文件命名规则-1 2.2 文件存放位置-2 2.3 css 书写规范-3 2.4 html书写规范-7 2. ...

  4. 规范自己的JavaScript书写 – Dojo Javascript 编程规范

    前言 良好的JavaScript书写习惯的优点不言而喻,今天彬Go向大家推荐Dojo Javascript 编程规范,相当不错的 Javascript 编程风格规范,建议大家可以借鉴一下此规范编写 J ...

  5. 【转】JavaScript常用代码书写规范

    javascript 代码规范 代码规范我们应该遵循古老的原则:"能做并不意味着应该做". 全局命名空间污染 总是将代码包裹在一个立即的函数表达式里面,形成一个独立的模块. 不推荐 ...

  6. CSS 样式书写规范

    可能不同团队都有各自的规范,又或者很多人在写 CSS 的时候还是想到什么就写什么,不存在太多的约束. 我觉得 CSS 代码规范还是有存在的必要的,尤其是在团队配合,多人协作下,规范就显得尤为重要. 本 ...

  7. 推荐大家使用的CSS书写规范、顺序

    推荐大家使用的CSS书写规范.顺序 CSS书写顺序 1.位置属性(position, top, right, z-index, display, float等) 2.大小(width, height, ...

  8. Javascript模块规范(CommonJS规范AMD规范)

    Javascript模块化编程(AMD&CommonJS) 前端模块化开发的价值:https://github.com/seajs/seajs/issues/547 模块的写法 查看 AMD规 ...

  9. JavaScript开发规范 0.01版

    为什么80%的码农都做不了架构师?>>>    JavaScript开发规范v0.01 终极原则:简洁,明晰,优雅. 所谓简洁,可以只写一遍的代码,绝不写两遍: 所谓明晰,尽量只用人 ...

最新文章

  1. Neutron 网络基本概念
  2. PetShop 4.0 数据访问层之我所见
  3. 整理下Anytao《你必须知道的.Net》全文链接
  4. 深圳农村商业银行转账显示服务器无响应,深圳农村商业银行
  5. java 文本 从列开始_如何从sql java中检索文本列?
  6. oracle关联表查询使用索引_SQL技巧:查询某个表关联的所有存储过程
  7. linux 创建进程 execl,linux中进程的vfork()和execl()函数
  8. 如何从SQL Server中的SELECT语句更新
  9. 模组管理器功能模块热插拔流程
  10. 人类dna信息量_如果有一个人的DNA序列等遗传信息数据,理论上能否克隆出这个人?需多少MB(兆字节)的信息量?...
  11. 云南省依托大数据管理平台反映扶贫工作 实现精准监督常态化
  12. 抖音数据化运营可以分为4个大的模块
  13. Ac4GlcNAz,98924-81-3,N-乙酰葡糖胺叠氮基,可以进行糖化学修饰
  14. 群晖设置腾讯云ddns显示认证失败的两种解决办法【实测第二种成功了】
  15. 天蓝色在ps中的色值_天蓝色云上的机器学习
  16. armadillo matlab,科学网—C++下媲美MATLAB矩阵运算的Armadillo 库 - 吴泓润的博文
  17. 总结和感慨人生两年(19.10-21.5)
  18. jQuery中所用到的第三方插件
  19. Stegsolve.jar打不开,jar类文件都打不开可能的解决办法
  20. juce Justification 分析

热门文章

  1. Web前端入门学习之JS基础知识梳理汇总
  2. JavaSE04、什么是类和对象,如何使用?
  3. callback函数_小程序不同页面的异步回调,callback和promise的使用讲解
  4. python中pcolor_python中pcolormesh-女性时尚流行美容健康娱乐mv-ida网
  5. java esc的_如何用Java中的Receipt打印机和ESC / POS命令提高速度
  6. mysql默认密码是多少_192.168.3.1默认登录密码是多少【详细介绍】
  7. 宁波大学考研复试C语言设计,2021年宁波大学考研复试名单及复试方案汇总
  8. python模拟键盘输入+切换键盘布局
  9. Linux下企业级分区方案
  10. Algs4-2.3.25切换到插入排序的试验