- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JavaScript最佳实践
JavaScript最佳实践分类:JavaScript | 标签: 教程翻译添加评论原文链接:/bestpractices/翻译声明:非逐句逐字翻译,若有翻译不当,纯属搞笑。翻译状态:未完成介绍这篇文档是一份清单,它罗列了一系列开发JavaScript代码的最佳的编程实践和首选的编程方法。文档中的每条内容都基于JavaScript 社区中众多开发者的意见和经验总结而来。但是,这些条款仅仅是一些建议,而并非需要绝对遵守的原则,一些经验丰富的开发者对于以下描述的内容,可能会持有 些许不同的意见。始终使用var关键字JavaScript中变量只有两种作用域范围:全局作用域和函数作用域, 使用var关键字对于保持变量作用域清晰是至关重要的。当声明一个变量作为全局变量或者函数级的变量(译者注:函数内部声明的变量,也就是在函数内部的局部变量), 始终在声明的最前面添加var关键字。下面的例子强调不使用var关键字会造成的潜在问题:不使用var造成的问题var i=0;// 正确:通过声明创建了一个全局变量function test(){for(i=0; ilt;10; i++){ alert(Hello World!);}}test();alert(i);// 警告:全局变量i的当前值为10由于函数内部的变量i没有使用var关键字声明为函数级变量,因此在函数循环体中初次使用变量i,它会往外层的名字空间寻找该变量名,在这个例子中它最终引用了全局变量i。始终使用var关键字声明全局变量是一个不错的编程习惯,但是要声明函数作用域的变量var的使用却是必不可少的。下面的两种方法在功能上是等价的:修正后的函数1function test(){var i=0;for(i=0; ilt;10; i++){ alert(Hello World!);}}修正后的函数2function test(){for(var i=0; ilt;10; i++){ alert(Hello World!);}}译者注:JavaScript是没有块级作用域的,所以修正后的函数1和2是一致的,变量i都被声明成函数级变量。特性检测而不是浏览器检测JavaScript中很常见的一种做法是,通过某种手段编写代码来检测浏览器的版本,并基于此结果而采取不同的动作。通常这是一种非常坏的习惯。即使某些代码通过查询navigator对象来检测,有时候依然是不可靠的(译者注:用户可以通过第三方工具轻松更改navigator.userAgent等属性)。更好的方法是使用特性检测。也就是说,在使用一些旧式浏览器可能不支持的高级特性之前,首先检测这个函数或者属性是否存在,然后再使用它。这比专门去检测浏览器的版本并假定它拥有某种功能的方法更加合理而可靠。有一篇深入讨论这个话题的文章,你可以在这里找到它。下面是一个采用特性检测的方法的例子:简单例子if(document.getElementById){var element = document.getElementById(MyId);}else{ alert(Your browser lacks the capabilities required to run this script!);}使用中括号运算符当所要访问的对象属性名,只有在运行时才能确定或者属性中包含非法的字符时(与点号运算符不兼容),请使用中括号运算符。如果你不是一位经验丰富的JavaScript程序员,总是使用中括号运算符访问对象的属性不失为一种好的习惯。JavaScript中对象属性主要有两种访问方式:点号运算符和中括号运算符。它们的语法如下所示:点号MyOperty中括号MyObvject[property]使用点号运算符,属性名称是固定的,不能够在运行时改变;而相对地若使用中括号运算符,属性名可以是一个固定的属性名,或者是一个变量,甚至是一个返回字符串属性名的函数调用。如果对象拥有属性value1, value2, value3”, 而你想通过一个整数变量i(例如i=2)来确定访问具体的某个属性:正确的做法MyObject[value+i]错误的做法MyObject.value+i有时在一些服务端环境中(如PHP、Struts等等),表单字段名称后面会追加[],表明该字段应该被当成一个数组来处理。然而在客户端环境 下,点号运算符访问带有[]的属性名是不合法的,这种情况下会抛出Synatax error的异常,原因是在JavaScript中[]是用来引用一个数组元素。在这种情况下,必须使用中括号运算符。正确的做法formref.elements[name[]]错误的做法[]建议在必须使用中括号运算符的场合,一定要使用它,而在某些非必须场合,可以
您可能关注的文档
最近下载
- 翼状胬肉的护理查房-PPT.ppt
- 2022年应急管理工作应知应会知识竞赛题库(含答案).pdf
- 全民微信时代增进了VS减弱了人与人之间的交流辩论赛 正方辩词一辩、二辩、三辩、四辩发言稿.docx
- 超星网课尔雅《人人学点营销学》尔雅答案2022章节测试答案.docx
- 2019CSP-J NOIP普及组初赛C++试卷.pdf VIP
- 2024年《城镇燃气管理条例题库》考试题库(含答案).pdf VIP
- 最新浙教版八年级上册劳动技术 项目三 任务二《打蛋器的制作》课件(课件).pptx
- 纪律意识方面存在不足及措施4篇.pdf
- 消防安全教育PPT课件.pptx VIP
- 《新中国成立75周年》全文课件.ppt VIP
文档评论(0)