资源预览内容
第1页 / 共30页
第2页 / 共30页
第3页 / 共30页
第4页 / 共30页
第5页 / 共30页
第6页 / 共30页
第7页 / 共30页
第8页 / 共30页
第9页 / 共30页
第10页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Javascript 书写规范:书写规范: 1. 文件编码统一为 utf-8; 2. 书写过程过, 每行代码结束必须有分号; 3. 库引入: 原则上仅引入 jQuery 库; 4. 变量命名: 以下划线链接每个单词,类型_变量名; s:表示字符串; n:表示数字; b:表示逻辑; a:表示数组; r:表示正则表达式; f:表示函数; o:表示以上未涉及到的其他对象; 变量在作用域的顶部申明变量在作用域的顶部申明。 5.常量: 全部大写, 以下划线分隔 如网站的 URL, 域,图片目录路径, js 和 css 用到的目录路径; 6. 类命名: 首字母大写, 驼峰式命名. 如 Comment; 7. 函数命名: 首字母小写驼峰式命名. 如 getUserName(); 8.类中私有方法,以下划线+方法名标注,私有方法不能在类外被调 用。 9. 命名语义化, 尽可能利用英文单词或其缩写; 10. 代码结构明了化, 加适量注释. 提高函数重用率; 1)大功能区块的功能描述(类,函数) /* 功能描述 参数描述 返回值 */ 2)单行的注释(放在行末尾) /注释 11. 注重与 html 分离, 减小 reflow, 注重性能. 12.Dom 中自定义的 class,以 j_classname 的形式 13.把外部 JavaScript 文件放在 HTML 底部,的前面 14.优化循环(循环体中若有 Dom 操作, 应该把 Dom 操作提到循环体 外;在同一作用域内,Dom 选择赋值给一局部变量。) 15.单引号和双引号 为了避免混乱,我们建议在 HTML 中使用双引号,在 JavaScript 中 使用单引号。 /html /JavaScript document.write(); /一段混用的 jQuery 代码 $(h1).after(目录); 16.使用更简单的格式来写 innerscript /早期的代码可能是这样的 . /现在不用 language 属性了 . 17.总是检查数据 要检查你的方法输入的所有数据,一方面是为了安全性,另一方面也 是为了可用性。用户随时随地都会输入错误的数据。这不是因为他们 蠢,而是因为他们很忙,并且思考的方式跟你不同。用 typeof 方法 来检测你的 function 接受的输入是否合法。 18.避免混入其他技术,js 不直接控制 css 详细的设置,可控制 classname 19.避免全局变量(类名空间 App.dialog.) 全局变量和全局函数是非常糟糕的。因为在一个页面中包含的所有 JavaScript 都在同一个域中运行。 所以如果你的代码中声明了全局变 量或者全局函数的话, 后面的代码中载入的脚本文件中的同名变量和 函数会覆盖掉(overwrite)你的。 /糟糕的全局变量和全局函数 var current = null; function init(). function change(). function verify(). 解决办法有很多,Christian Heilmann 建议的方法是: /如果变量和函数不需要在“外面”引用,那么就可以使用一个没有名 字的方法将他们全都包起来。 (function() var current = null; function init(). function change(). function verify(). )(); /如果变量和函数需要在“外面”引用,需要把你的变量和函数放在一 个“命名空间”中 /我们这里用一个 function 做命名空间而不是一个 var,因为在前者 中声明 function 更简单,而且能保护隐私数据 myNameSpace = function() var current = null; function init(). function change(). function verify(). /所有需要在命名空间外调用的函数和属性都要写在 return 里面 return init:init, /甚至你可以为函数和属性命名一个别名 set:change (); 20.声明变量的话,总是用 var JavaScript 中的变量可能是全局域或者局部域,用 var 声明的话会更 加直观。 21.避免使用 eval()方法(ajax 数据请求验证) JavaScript 中的 eval()方法是在运行时把任何代码当作对象来计算/ 运行的方法。实际上由于安全性的缘故,大部分情况下都不应该用 eval(),总是有一种更“正确”的方法来完成同样的工作的。基本原则 是,eval is evil,在任何时候都不要用它,除非你是一个老手,并且 知道你不得不这样做。 22.不要偷懒省略”和 从技术上说,你可以忽略很多花括号和分号。 /虽然看上去很不对头,大部分浏览器都能正确解析这段代码 if(someVariableExists) x = false /这个代码看上去更不对头了,咋眼一看似乎下面的句都被执行了 /实际上只有 x=false 在 if 中 if(someVariableExists) x = false anotherFunctionCall(); 所以,要记住的原则是:1.永远不要省略分号;2.不要省略花括号, 除非在同一行中。 /这样是 OK 的 if(2 + 2 = 4) return nicely done; 23.获取对象属性的时候用方括号而不是点号 在 JavaScript 中取得某对象的属性有两种方法: /点号标记 MyObject.property /方括号标记 MyObject“property“ 如果是用点号标记取得对象的属性,属性名称是硬编码,无法在运行 时更改;而用方括号的话,JavaScript 会求得方括号内值然后通过计 算结果来求得属性名。也就是说用方括号标记的方式,属性名称可以 是硬编码的,也可以是变量或者函数返回值。 /这样是不行的 MyObject.value+i /这样就没有问题 MyObject“value“+i 24.for in 语句语句遍历一个对象中的所有条目的时候,用 for in 语句是非 常方便的。 但有时候我们不需要遍历对象中的方法, 如果不需要的话, 可以加上一条 filter。 /加上了一个过滤器的 for in 语句 for(key in object) if(object.hasOwnProperty(key) .then do something. 25.代码排版 缩进 tab 长度为 4 行长度 ,控制在可视范围内,以一个分号结束 花括号,如果是一个代码段,花括号紧跟在语句的后面 文件功能定义 base:网站常量 common:我,自动延伸高,插入表情,统计字数,全选,收藏心 跳,分享站外,关注,弹窗,拖拽,top 至顶 page制作要求:制作要求: 、弹窗:按设计图还原即可,不用考虑弹窗的位置。 、对于网页代码,一定要保持足够的精简,拷贝的无用代码一定要 删除。 、标签的语义化,不能滥用标签。 、尽可能不用标签 ID 来控制样式。 后端后端:js 功能性修改,需要通知前端。 全局命名空间污染与 IIFE 总是将代码包裹成一个 IIFE(Immediately-Invoked Function Expression),用以 创建独立隔绝的定义域。这一举措可防止全局命名空间被污染。 IIFE 还可确保你的代码不会轻易被其它全局命名空间里的代码所修改(i.e. 第 三方库,window 引用,被覆盖的未定义的关键字等等)。 不推荐不推荐 1.var x = 10, 2.y = 100; 3. 4./ Declaring variables in the global scope is resulting in global scope pollution. All variables declared like this 5./ will be stored in the window object. This is very unclean and needs to be avoided. 6.console.log(window.x + + window.y); 推荐推荐 1./ We declare a IIFE and pass parameters into the function that we will use from the global space 2.(function(log, w, undefined) 3.use strict; 4. 5.var x = 10, 6.y = 100; 7. 8./ Will output true true 9.log(w.x = undefined) + + (w.y = undefined); 10. 11.(window.console.log, window); IIFE(立即执行的函数表达式) 无论何时,想要创建一个新的封闭的定义域,那就用 IIFE。它不仅避免了干扰, 也使得内存在执行完后立即释放。 所有脚本文件建议都从 IIFE 开始。 立即执行的函数表达式的执行括号应该写在外包括号内。 虽然写在内还是写在外 都是有效的,但写在内使得整个表达式看起来更像一个整体,因此推荐这么做。 不推荐不推荐 1.(function()(); 推荐推荐 1.(function()(); so,用下列写法来格式化你的 IIFE 代码: 1.(function() 2.use strict; 3. 4./ Code goes here 5. 6.(); 如果你想引用全局变量或者是外层 IIFE 的变量,可以通过下列方式传参: 1.(function($, w, d) 2.use strict; 3. 4.$(function() 5.w.alert(d.querySelectorAll(div).length); 6.); 7.(jQuery, window, document); 严格模式 ECMAScript 5 严格模式可在整个脚本或独个方法内被激活。它对应不同的 javascript 语境会做更加严格的错误检查。 严格模式也确保了 javascript 代码更 加的健壮,运行的也更加快速。 严格模式会阻止使用在未来很可能被引入的预留关键字。 你应该在你的脚本中启用严格模式,最好是在独立的 IIFE 中应用它。避免在你 的脚本第一行使用它而导致你的所有脚本都启动了严格模式, 这有可能会引发一 些第三方类库的问题。 不推荐不推荐 1./ Script starts here 2.use strict; 3. 4.(function() 5. 6./ Your code starts here 7. 8.(); 推荐推荐 1.(function() 2.use strict; 3. 4./ Your code starts here 5. 6.(); 变量声明 总是使用var来声明变量。如不指定 var,变量将被隐式地声明为全局变量,这 将对变量难以控制。如果没有声明,变量处于什么定义域就变得不清(可以是在 Document 或 Window 中,也可以很容易地进入本地定义域)。所以,请总是 使用 var 来声明变量。 采用严格模式带来的好处是,当你手误输入错误的变量名时,它可以通过报错信 息来帮助你定位错误出处。 不推荐不推荐 1.x = 10; 2.y = 100; 推荐推荐 1.var x = 10, 2.y = 100; 理解 JavaScript 的定义域和定义域提升 在 JavaScr
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号