JavaScript风格要素
作者:realazy 来源:realazy 发布时间:2007-10-25 16:57:00
关于英文的写作有一本十分著名的书,The Elements of Style(风格要素),编写程序也有一本The Elements of Programming Style(编程风格要素)。证明了在某种程度上,编写程序其实就是语文写作,清晰的风格对程序的质量有着重要的影响。草率含混的风格会隐蔽程序真性。
作为JavaScript Guru, Douglas Crockford提出了自己对JavaScript风格的创见(第一部分,第二部分)。
第一部分主要讨论JavaScript语言本身,包括:
淘汰过时的构建。
讨论了在HTML页面引入JavaScript的方式。经典的写法是:
<script language=javascript><!-- --></script>
language并不是W3C所认同的标准,建议使用的是type, 但作为type值的MIME type并没有标准化(有时是text/javascript, 有时是application/ecmascript),但目前所有的浏览器都是使用JavaScript作为默认的脚本语言,因此仅仅些<script>就是安全的。随着NetScape 3的淘汰,<-- -->也不是必要的了。
(注:这个东西Web标准社区也有自己的看法,并认为应该写type="text/javascript",我也赞成。)
在结构中始终使用区块。
莫偷懒,省略区块(即{ })会引发不经意的错误和麻烦。即使只有一句,也老老实实写上:
if (expression) { ... }
避免在表达式中进行赋值。虽然可以使代码紧凑,但会让控制流程难于理解。
使用对象扩充。在不需要构造函数的对象中,不如先创建一个空对象,然后扩充它。
使用通用库。注意提高代码的重用。
第二部分主要讲的是一些使程序更清晰和简洁的习惯用法:
使用==得当心强类型。1 == true是真,但1 === true却为假。
使用?:运算符选择两值之一。在这种操作中,三元运算符为此而生。
永远不要使用隐含的全局变量。请记得声明变量时加上var.
不要使用?:来选择两种行为的其一。写作p.style.backgroundColor = z ? '#fff' : '#989898';而不是(z == 0) ? p.style.backgroundColor = '#fff' : p.style.backgroundColor = '#989898';。
使用||来指定一个默认值。最典型的莫过于处理事件参数了:var e = e || event;。
全局变量是 * 的。
使用内部函数来避免全局变量。
这些风格是Crock在2005年提出的,现在有些已经深入人心(如不要使用全局变量),因而也没有必要多做解释了。如果你有所疑惑,不如详细看看这两篇风格文章,里面有大量的代码来举证这些风格的重要性。
猜你喜欢
- 如何用SA-FileUp上传多个文件?表单处理: <%@&nbs
- 【1】 以XML 返回 (1)未定义属性的 select logisticsId,logisticsName from LogisticsC
- 1 查找记录条数 select count(*) from table_name(换成表名)&nbs
- 最近在改个程序用到了在js中设置css的float属性,以为和平常的写法一样,原来不是,只好去请教google,原来...首先大家先来看一下
- 如何在页面中实现对电子信箱的访问?emaile.htm<HTML><HEAD><META NAME=
- 提要:系统自带的mysql默认字符集不是gbk,因此给数据库的推广应用以及中文程序的开发带来极大的不便,在没完没了的GBK和UTF8的转换过
- 你是否对获得MySQL数据库与表的最基本命令的实际操作感到十分头疼?如果是这样子的话,以下的文章将会给你相应的解决方案,以下的文
- “Be conservative in what you send; be liberal in what you accept. &nbs
- 你是否发现,在浩如烟海的应用程序堆里,具有漂亮图标和清爽名字的 App 更容易被用户喜爱。作为开发者,面对这自己的作品,能否自问一句:“从图
- 以前看到 andy的关于“Quiet Structure”觉的很不错,于是今天到她的个人站点上逛逛,发现不少好的文章,今天介绍的是
- javascript可以根据输入值自动搜索显示相关的select列表,对于列表很长时可以很方便的查找到要的值。js代码:<script
- 利用FSO取得BMP,JPG,PNG,GIF文件信息:大小,宽、高尺寸等 ’:::::::::::::::::::::::::::
- 内容摘要:本文详细介绍了SQL Server导入导出数据的方法:(1)导出导入SQL Server里某个数据库,(2)导
- 数字序号① ①② ②③ &
- 今天帮助同事解决一个问题,问题是她做的一套页面在FF下显示正常,在IE6下样式却没有效果,也就是没有应用样式。最终发现是编码不匹配的问题,c
- 信息架构的组件可以拆分成四类组织系统 如何组织信息,例如,依据主题或年代顺序。标签系统 如何表示信息,例如,科学术语(“Acer”)或通俗术
- gchart:基于google图表API的jquery组件全攻略——入门gchart是基于google图表API的jquery组件。使用gc
- 我在用 ASP 写一个数据库的应用的时候,总是被那些看起来好好的SQL语句执行起来产生的错误代码搞得头疼,请问有没有更好的解决办法啊?有,我
- 1、关于页面元素的引用通过jquery的$()引用元素包括通过id、class、元素名以及元素的层级关系及dom或者xpath条件等方法,且
- IE 一如既往地带来问题。真的,我觉得 IE 坚持自己的一套无所谓,不支持或者不完全支持标准也无所谓。但是,IE6 IE7 IE8 这三个版