跳转到路径导航栏
跳转到正文内容

TESTESTESTES(2)

http://www.sina.com.cn  2009年07月14日 19:09  

  }

  }

  2. 多使用短路表达式

  全局变量的部分说的有点多了,大概是因为老田我经历过那类痛苦吧。短路表达式就是&&和||,在这里用来提高鲁棒性。举两个例子,第一,要得到某div节点的第一个节点的nodeName:

  var div = document.getElementById("div_id");

  var node_name;

  if (div && div.firstChild) { // 在用firstChild前,先判断div是否存在

  node_name = div.firstChild.nodeName;

  }

  第二,用||来快速解决一些浏览器兼容性问题:

  // 得到元素内文本的跨浏览器解决方案

  var text = span.innerText || span.textContent || "";

  再例,用||来设置默认值:

  // 设置默认值

  var my_attr = span.getAttribute("my_attr") || default_value;

  3. 操作元素前,首先判断其存在;

  4. 良好的代码缩进和格式;return {}

  Doug Crockford,《JavaScirpt: The Good Parts》的作者,在给Google做演讲的时候,详细分析了代码格式的重要性。比如:

  return

  {

  pos_x : x,

  pos_y : y

  }

  5. 使用跨浏览器的代码;

  6. 变量尽早定义;

  7. 小心NodeList;

  8. 使用===和!==;

  9. 不用eval,不用with;我是学控制理论出身,一个控制系统的鲁棒性,确实是在做系统设计时需要着重注意的。什么是控制系统的鲁棒性?

  所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持某些性能的特性(摘自百度百科……汗)。

  在软件设计和开发中,同样也要时刻考虑提高鲁棒性。那么如何提高JavaScript程序的鲁棒性呢?我认为,RIA的鲁棒性,一般来讲,主要跟js的代码规范性和DOM操作有关系。下面我总结几点开发中需要注意的地方,让页面跑不死、不报错。这些事情可能在实际开发中都是小事,但是对于提高软件整体的鲁棒性,是非常critical的!

  1. 严禁使用全局变量

  唉,这个我可是亲身体会并深受其害啊!话说,当时我修改一个页面,开发一段脚本,需要写cookie。我发现页面上以前有人引用了一个js文件,里面有setCookie函数,好啊,拿来用!结果这个cookie死活都写不对。检查了半天,才发现这个页面引用的另外一个js文件也有一个setCookie函数,函数的参数和刚才那个不一样,而我调用的估计是这个函数!应该是之前的两个同事在同一个页面上自己搞自己的,结果竟然函数重名,而这两个函数都是全局的!设想一下,加入两个人都在全局范围内搞一个var i = 0; 那岂不是更加疯掉。

  这个故事得到的教训,首先当然是同一个team的开发者应该多兼容并包,团结协作。其次呢,页面的js较多的时候,一定要有一个好的层次,避免全局变量。避免全局变量的一个方式是namespace。例如创建一个这样的程序结构:

  var my_project = {

  dom : {

  get : function() {},

  make : function() {} // etc。

  },

  cookie : {

  get : function() {},

  set : function() {},

  remove : function() {}

  },

  util : {

  // some project utilities

  }

  }

  2. 多使用短路表达式

  全局变量的部分说的有点多了,大概是因为老田我经历过那类痛苦吧。短路表达式就是&&和||,在这里用来提高鲁棒性。举两个例子,第一,要得到某div节点的第一个节点的nodeName:

  var div = document.getElementById("div_id");

  var node_name;

  if (div && div.firstChild) { // 在用firstChild前,先判断div是否存在

  node_name = div.firstChild.nodeName;

  }

  第二,用||来快速解决一些浏览器兼容性问题:

  // 得到元素内文本的跨浏览器解决方案

  var text = span.innerText || span.textContent || "";

  再例,用||来设置默认值:

  // 设置默认值

  var my_attr = span.getAttribute("my_attr") || default_value;

  3. 操作元素前,首先判断其存在;

  4. 良好的代码缩进和格式;return {}

  Doug Crockford,《JavaScirpt: The Good Parts》的作者,在给Google做演讲的时候,详细分析了代码格式的重要性。比如:

  return

  {

  pos_x : x,

  pos_y : y

  }

  5. 使用跨浏览器的代码;

  6. 变量尽早定义;

  7. 小心NodeList;

  8. 使用===和!==;

  9. 不用eval,不用with;

上一页 1 2 下一页
yes
看完该新闻后,你的评价是:查看更多枪稿雷文>>

支  持

好文章

枪  稿

雷  人

无  语

标题党
Powered By Google

网友评论 更多评论

已有 _COUNT_位网友发表评论  
登录名: 密码:

新浪简介About Sina广告服务联系我们招聘信息网站律师SINA English会员注册产品答疑┊Copyright © 1996-2009 SINA Corporation, All Rights Reserved

新浪公司 版权所有