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年提出的,现在有些已经深入人心(如不要使用全局变量),因而也没有必要多做解释了。如果你有所疑惑,不如详细看看这两篇风格文章,里面有大量的代码来举证这些风格的重要性。


猜你喜欢
- 事件技术一般水平有限,有什么错的地方,望大家指正。事件就是用户和浏览器交互的一种途径。假如一个用户注册的功能,我们在填写完基本信息之后,点击
- 前言defer是golang语言中的关键字,用于资源的释放,会在函数返回之前进行调用。一般采用如下模式:f,err := os.Open(f
- 1. 简介在windows系统上,重复性的操作可以用Python脚本来完成,其中常用的模块是win32gui、win32con、win32a
- 下面是IN条件运算符的SQL语句:SELECT column1, SUM(column2) FROM&nbs
- 代码很简单,这里就不多BB了,小伙伴们直接看示例吧<!DOCTYPE html PUBLIC "-//W3C//DTD XH
- 在ubuntu下面发生的原因是:开了多个pycharm,关掉那个new project选项是灰色的,剩下的那个pycharm的new pro
- 背景前段时间写了一个自动化安装 MySQL 的程序,其中有一个环节就是动态的渲染 my.cnf 文件;总的解决方案就是像 Django 渲染
- 1:GET访问 浏览器 认为 是等幂的就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配]所以 第二次访问的时候 如果
- 说明1、ChainMap的主要用例是提供一种有效的方法来管理多个范围或上下文,并处理重复键的访问优先级。2、当有多个存储重复键的字典访问它们
- 目录实现思路使用BackgroundSubtractorMOG2进行背景分割使用人像识别填充面部信息使用形态学填充分割出来的前景将人像与目标
- 函数作为值Go编程语言提供灵活性,以动态创建函数,并使用它们的值。在下面的例子中,我们已经与初始化函数定义的变量。此函数变量的目仅仅是为使用
- 组件的基本使用注册组件注册组件就是利用Vue.component()方法,先传入一个自定义组件的名字,然后传入这个组件的配置。 Vue.co
- http://serverName/appName/module/action/id/1/这个就是pathinfo模式在不考虑路由的情况下,
- 1、冒泡排序它反复访问要排序的元素列,并依次比较两个相邻的元素。如果顺序(如从大到小)错了,就交换它们。访问元素的工作是反复进行,直到没有相
- 本文记录了Windows10安装Python2.7的详细步骤,分享给大家。一、下载软件Python的官方地址点击Downloads找到进行下
- Vue开发环境跨域访问其他服务器或者本机其他端口,需要配置项目中config/index.js文件,修改如下module.exports =
- 前言首先,先说明我只是初步接触yolov7,写这篇文章的主要目的是可以让大家快速应用自己的数据集进行训练。没有接触过yolov5也没有关系,
- 由于 Ubuntu 中的汉字输入实在是太不友好了,所以装了个 搜狗输入法,好不容易把 搜狗输入法装好,本以为可以开开心心的搞代码了,然而。。
- 使用Python编写探测WAF指纹脚本,再结合到Sqlmap中,这样以后再探测网站时,如果识别到此WAF指纹,就会显示出来。编写探测识别WA
- 代码实现如下:import win32com.client,os,timedef word_encryption(path, passwor