8、不必热衷动态事件绑定

  虽然知道事件可以动态绑定,比如使用addEventListener或者使用jQuery的bind方法,也知道采用动态事件绑定可以让XHTML更干净,但是一般情况下我还是建议直接把事件写在DOM节点上,我认为这样可以使代码变得更容易维护,因为这样做,我们在查看源代码的时候可以容易地知道什么Element绑定了什么方法,简单说这样更容易知道一个按钮或链接点击时调了什么方法脚本。

  9、降低代码与XHTML的耦合性

  不要过于依赖DOM的一些内容特征来调用不同的脚本代码,而应该定义不同功能的方法,然后在DOM上调用,这样不管DOM是按钮还是链接,方法的调用都是一样的,比如像下面的实现显然会存在问题:


function myBtnClick(obj)
{
 if (/确定/.test(obj.innerHTML)) 
  alert('OK');
 else if (/取消/.test(obj.innerHTML)) 
  alert('Cancel');
 else
  alert('Other');
}


  上面例子其实在一个函数内处理了两件事情,应该分成两个函数,像上面的写法,如果把链接换成按钮,比如改成这样:<input type=”button” onclick=”myBtnClick(this)” value=”确定” />,那么myBtnClick函数内部的obj.innerHTML出问题了,因为此时应该obj.value才对,另外如果把按钮名称由中文改为英文也会出问题,所以这种做法问题太多了。

  10、一个函数应该返回统一的数据类型

  因为JavaScrip是弱类型的,在编写函数的时候有些人对于返回类型的处理显得比较随便,我觉得应该像强类型语言那样返回,看看下面的两个例子:


function getUserName(userID)
{
 if (data[userID])
  return data[userID];
 else
  return false;
}
 


  应该改为:


function getUserName(userID)
{
 if (data[userID])
  return data[userID];
 else
  return "";
}
 


  这个方法如果在C#中定义,我们知道它准备返回的数据类型应该是字符串,所以如果没有找到这个数据我们应该返回空的字符串,而不是返回布尔值或其它不合适的类型。这并没有影响到函数将来的调用,因为返回的空字符串在逻辑判断上可被认作“非”,即与false一样,除非我们使用全等于“===”或typeof进行判断。