1.使用4个空格为缩进层级.(或者按tab制表符键)

2.不要省略分号

3.将一行长度限定为80个字符,超出则换行(在运算符后换行,下一行增加两个层级的缩进)

4.适当增加空行,提高可读性.比如:方法之间,多行或单行注释之前,在方法内的逻辑片段之间插入空行。

5.命名:遵循驼峰大小写命名法。变量以名词命名,方法以动词命名.尽量简短。

can,has,is 返回一个布尔值

get,find,read 返回一个非布尔值

set 用来保存一个值

常量,采用大写字母和下划线来命名,下划线用以分隔单词。MAX_COUNT

构造函数采用驼峰命名法,第一个字母也大写.通常以名词来命名

6.使用双引号来括住字符串。

7.null的使用

null是一个特殊值和undefind不同。

使用null的场景:

1.用来初始化一个变量,这个变量可能赋值为一个对象。

2.用来和一个已经初始化的变量比较,这个变量可以也可以不是一个对象

3.当函数的参数期望是对象时,用做参数传入

4.当函数的返回值期望是对象时,用作返回值传出

不推荐使用的场景

1.不要使用null来检测是否传入了某个参数

2.不要用null来检测一个未初始化的变量

8.undefined的使用.表示声明但是未赋值的变量也可能是未声明的变量或方法。由于typeOf无法区分是未声明

还是未赋值。所以尽量禁用undefined。比如:

var person = null.而不要 var person;

9.使用对象直接量创建对象.

第一行包含左花括号,每个属性名称独占一行,并且保持一个缩进.最后右花括号也独占一行。

//好的写法

var book={

title:"编写风格",

author:"张三"

};

10.推荐使用数组直接量来定义数组

注释.............................................

1.单行注释以两个斜线开始,以行尾结束.独占一行上方空一行,且与本行代码保持同缩进。

2.多行注释。以/开始,/结束。采用java风格.多行注释至少包含3行。第一行/独占一行,第二行以开头,和上一行的保持左对齐,注释开始,最后一行/独占一行

/*

我是多行注释

*/

3.何时添加注释.当代码不够清晰时添加注释.

//初始化count,画蛇添足

var count = 10;

//好的写法

//改变这个值可能会让它变成青蛙

var count = 10;

语句和表达式.......................................

1.if和for即使只有一行,也要带有花括号.花括号风格采用.第一个花括号在第一行的末尾方式.

在括左圆括号之前和右圆括号之后各添加一个空格。比如:

if (true) {

//dosometing......

}

2.switch格式.case和switch左对齐.case之间没有空行.连续执行的case需要加注释说明.

switch (condition) {

case "first":

//代码

break;

case "second":

//代码

break;

}

3.禁用with

4.尽量避免使用continue,来增强代码的可读性。

5.for-in的使用,必须带有object.hasOwnProerty来避免遍历原型连中的属性.不能用for-in来遍历数组。

var prop;

for (prop in object) {

if (object.hasOwnProperty(prop)) {

console.log(" name is "+prop);

console.log(" value is "+object[prop]);

}

}

变量函数和运算符.......................................

1.变量的声明。由于javascript是变量提前的.所以局部变量的定义作为函数内第一条语句。比如:

function doSometingWithItems(items){

var i,len;

var value = 10;

var result = value+10;

for (i=0,len=items.length;i

doSometing(items[i]);

}

}

当无关联的变量声明时,尽量合并var.

var value = 10,

result = value+10,

i,

len;

2.函数的声明.虽然函数声明会被javascript引擎提前,还是要求函数调用在函数声明之后。

即先声明,再调用.

函数内部的函数声明,要紧接着变量声明之后声明

函数声明不应该出现在语句块内。比如:错误写法

if (true) {

function doSometing(){

alert('h1');

}

}

函数名和左括号之间不能有空格.doSometing(item);这个明显区别于if,while等语句块。

3.立即执行的函数.javascript中允许匿名函数.比如:

//将匿名函数赋值给一个变量

var book = function(){

};

//对于立即执行的函数.需要在匿名函数上增加小括号

var book = (function(){

//doSomething

})();

4.需要做全等和全不等比较时。尽量用===和!==

5.禁止使用eval()和new Function,禁止给setTimeout和setInterval传入字符串参数

6.在css中,一定要杜绝使用css中的js表达式。(IE9已经不再支持.)比如:

.box{

width:expression(document.body.offsetWidth+"px");

}

7.最好将所有的javascript代码都放入外置文件中,以确保在HTML代码中不会有内联的javascript代码

8.尽量避免innerHTML方法,可以1.从远程服务器加载,2.加载外部html片段,3写替换函数.替换标识。

避免使用全局变量.......................................

1.尽量使用单全局变量.比如:

YUI定义了唯一全局对象YUI

jQuery定义了两个全局对象 $和jQuery 当$被其他类库使用时可以使用jQuery

Dojo定义了dojo

2.javascript中字符串,数字,布尔值,null和undefined是原始类型。判断原始类型可以用typeOf。

3.除了原始类型都是引用类型.不能用typeOf来判断了.因为都返回object.

检测自定义类型可以用instanceof来检测,function用 typeOf来检测,数组用鸭式辨形法.

function isArray(value){

if( typeof Array.isArray === "function" ){

return Array.isArray(value);

} else {

return Object.prototype.toString.call(value) === "[Object Array]";

}

}

4.检测对象中是否包含某个属性,用in来判断.

配置数据......................................

1.可配置的数据,最好单独存放在一个文件里

url

需要展现给用户的字符串

重复的值

设置(比如每页的配置项)

任何可能发生变更的值

var config = {

MSG_INVALID_VALUE:"Invalid value",

URL_INVALID:"/error/index.jsp",

CSS_SELECTED:"selected"

}

2.适当的抛出异常.throw new Error("");javascript可以 throw 任何东西。但是有些浏览器会不认

尽量throw new Error("");

3.TODO,对于需要以后处理的地方 必须加入//TODO{注解}

在html中设置常量并做判断,写一篇我所理解的javascript编程规范相关推荐

  1. 好好说说Java中的常量池之Class常量池 1

    转载自   好好说说Java中的常量池之Class常量池 在Java中,常量池的概念想必很多人都听说过.这也是面试中比较常考的题目之一.在Java有关的面试题中,一般习惯通过String的有关问题来考 ...

  2. 好好说说Java中的常量池之Class常量池

    前言 在Java中,常量池的概念想必很多人都听说过.这也是面试中比较常考的题目之一.在Java有关的面试题中,一般习惯通过String的有关问题来考察面试者对于常量池的知识的理解,几道简单的Strin ...

  3. 在用户控件中用户登录后台脚本判断

    在用户控件中用户登录后台脚本判断写法  if (!IsPostBack)         {                         imagelogin.Attributes.Add(&qu ...

  4. iPhone App创建与审核步骤二:如何在developer.apple.com网站中设置App预览和截屏以完成App上架

    iPhone App创建与审核步骤二:如何在developer.apple.com网站中设置App预览和截屏以完成App上架,根据图标规范RAD Studio 10.4 for delphi XE 或 ...

  5. R语言ggplot2可视化:通过在element_text函数中设置ifelse判断条件自定义标签文本的显示格式:例如、粗体、斜体等

    R语言ggplot2可视化:通过在element_text函数中设置ifelse判断条件自定义标签文本的显示格式:例如.粗体.斜体等 目录

  6. mysql中无穷大如何表示_编程中无穷大常量的设置技巧

    如果问题中各数据的范围明确,那么无穷大的设定不是问题,在不明确的情况下,很多程序员都取0x7fffffff作为无穷大,因为这是32-bit int的最大值.如果这个无穷大只用于一般的比较(比如求最小值 ...

  7. html链接word文档,word超链接怎么做 如何在word中设置超链接

    word超链接怎么做?我们在制作文档如果需要跟网页一样可以直接在word中的文字中点击跳转到一个新的网页该怎么设置?或者是要在word一个文档内部创建超级链接的话该如何实现?下面就让脚本之家教大家在w ...

  8. lighthouse_Laravel中的GraphQL做得正确:如何在一个简单的博客中设置Lighthouse

    lighthouse by Oliver Nybroe 由Oliver Nybroe Laravel中的GraphQL做得正确:如何在一个简单的博客中设置Lighthouse (GraphQL in ...

  9. 使用smart-doc 做接口文档工具,Controller访问路径中的常量无法替换问题

    最近,项目开发中使用 smart-doc 作为接口文档生成工具的使用中,由于请求路径带有常量的问题, 虽然根据 smart-doc官网文档中如何替代请求路径的常量设置替换的方法,但生成的html文中路 ...

最新文章

  1. 限制用户不允许输入中文字符
  2. iOS 计算文字宽度的一个细节
  3. Tomcat性能优化总结
  4. SpringBoot集成MyBatis的分页插件PageHelper
  5. 随想录(kernel的版本管理)
  6. 谷歌小姐姐搞出魔法画板:你随便画,补不齐算AI输
  7. 深入理解JAVA锁的机制
  8. 浅谈软件项目中的需求分析与需求管理
  9. hp laserjet 1213 linux驱动下载,惠普HP LaserJet Pro M1213nf一体机驱动
  10. windows上必备的提升效率的软件
  11. 活在当下,谋在未来,国内外新能源汽车城市物流配送运营模式创新
  12. html文档标记语言,html是超文本标记语言标签有
  13. linux系统下的动态壁纸,动态壁纸给Linux发行版添加活力背景
  14. 判断人物眼型matlab,怎么判断眼型和脸型?
  15. 杂记-Macbook Pro M1芯片能玩深度学习吗?
  16. 产品经理学项目管理05:项目管理的目标
  17. 【KDD2022教程】图算法公平性:方法与趋势
  18. Linux 挂载2TB以上硬盘
  19. H323——460NAT穿透相关
  20. 2019小明的比赛c++

热门文章

  1. 重建控制文件--Rebuild controlfile
  2. Effective JavaScript Item 40 避免继承标准类型
  3. iOS开发UI篇—Quartz2D使用(矩阵操作)
  4. Codeforces Gym 100203G G - Good elements 暴力
  5. 常见的mysql集群
  6. 《随机出题软件》《随机分队软件》源码(Windows API)
  7. UNSW-论文以及博士论文下载
  8. Spring-ConfigurationClassPostProcessor类
  9. JavaSE02 数组的基本知识
  10. 贝叶斯算法伪代码_字节跳动算法面经