转载自:

http://www.cnblogs.com/ztoz/p/5491187.html


<input id="a"><script>a.value = 1</script>
这种写法的意思是,解析器先从全局变量中寻找a,如果找不到,就从DOM中寻找id为a的元素,a是节点元素。
a跟document.getElementById("a")的区别是:
1、a显然最简洁。
2、使用a容易引起其他程序员的误解,会被认为是变量名,不利于维护
3、如果一定要用a,最好写成id_a,至少别人看到会知道这是来自于DOM元素的id。

还有两种写法是

var ID = document.getElementById.bind(document);ID("a").innerHTML = 1;



function ID(id){
	return document.getElementById(id)
};
ID("a").innerHTML = 1;



chrome浏览器下的效率排名:
并列第一名是document.getElementById("a")和function ID(id){return document.getElementById(id)},后者本质是函数,速度很快。这两者的速度都是a.的4倍
第二名是var ID = document.getElementById.bind(document);ID("a").innerHTML = 1;速度是a.的2倍
第三名是a.
第四名是jquery的$("#a"),速度是a.的三分之一。

IE8浏览器下的效率排名:
第一名:a,没错,是a,速度为1.3个单位。原因我不知道。。
第二名:getElementById,原生方法,速度为1.1个单位。
第三名:function那种,速度为1个单位
第四名:jquery不解释。
另:IE8不支持bind,不说了。

总之:
1、在一个网页中,应该优先选用function ID(id){return document.getElementById(id)},因为ID("a")比a只多了几个字符而已,但是chrome浏览器下,速度是a的4倍。虽然IE8里面a最快,也没有明显优势。
2、var ID = document.getElementById.bind(document);跟函数写法比较起来很慢,兼容也不好,绝对不要用。
3、a就不要用了,很业余的赶脚,因为a跟ID("a")长度差不多,完全没优势,在chrome浏览器下速度还慢了四倍,而且,一旦全局变量跟你的id重名,会造成混乱。
4、document.get...这种写法是最原生的,原则上说,它比函数式写法要快一点点,但这种快是千分之一毫秒级别的,完全可以忽略。而且它太长了!长到让人觉得×××的程度。
5、当需要复杂选择器的时候用jquery。因为复杂选择器如果用原生写法就太长太长了。

所以,id选择器用函数那种,复杂选择器用jquery。