[从jQuery看JavaScript]-JavaScript

  什么是JavaScript?相信随便百度Google一下都能找到一大堆的定义解释。而在我的理解中,JavaScript就是一种客户端的脚本语言,用于处理页面数据逻辑和用户体验(网页特效)。实际上,JavaScript并不仅仅只能用于客户端,它还能用于服务器端编程,典型的例子就是Mozilla Rhino。Mozilla Rhino是一个纯Java的开源的JavaScript实现,它只是对JavaScript核心语法的编译实现,并没有对HTML对象的处理等功能(这不是当然的嘛……)。而我学习整理的范围只是浏览器端中的JavaScript,所以这里就表过不提了。对Mozilla Rhino有兴趣的同学可以点击这里。类似的JavaScript引擎还有Mozilla SpiderMonkey(C语言实现)和DMDScript(D语言实现)等。 

  就浏览器端的JavaScript引擎来说,也是分了好几类的,例如Microsoft的叫JScript,Netscape的叫JavaScript(换句话说,Netscape才是JS的鼻祖——作者乃是Netscape的Brendan Eich),Google的叫V8(也就是Chrome的JS引擎),还有苹果的WebKit。这么多的引擎,就会带来许多不同的标准,这就导致我们现在的Web前端开发时所遇到的窘境——JS不是对每一个浏览器都适用。为此,早在JavaScript诞生初期,Netscape就将其提交给ECMA(欧洲计算机制造商协会)进行标准化工作,所以现今的JavaScript引擎基本都遵从ECMA-262规范。尽管他们都遵从ECMA-262规范,但各个厂商还是对自己的JavaScript引擎作了自己的扩展和修改。这些不规范的扩展和修改最终引发了强烈的整合需求,于是一个又一个JS函数库就出现了,jQuery也是其中之一。 

  如前所述,JavaScript是一种脚本语言,它不需要在服务器端编译,而是在发送到客户端后,由浏览器解释执行。因此,它是一种解释语言。对于解释语言来说,源代码是一边读取一边执行的,而当执行遇到错误的时候,错误语句之后的脚本都将会被停止执行。而且,浏览器并不会保留运行结果,所以每次打开同一页面,其页面上的JS都将重新运行一遍(虽然源文件可以通过设置头信息缓存),这是JS一个先天的性能问题。还需要注意的是,浏览器解释HTML文档时,JS的引入也是按顺序解释执行的。所以,若是引入的JS脚本之间如果有依赖的话,执行依赖方法的语句必须要在实现方法语句之后。另外,各浏览器的DOM生成顺序也是不同的,所以如果有需要执行的JS脚本需要调用DOM对象的话,最好是放到onload之类的函数中。而对于直接写在页面上的函数,也可以在引入标签上加上defer属性(IE5或FF3.5或以上版本才能支持),暂缓其执行。还有就是,直接写在页面上的JS脚本,最好在都括在<!—和//—>中。这是为了防止低版本浏览器错误解释代码用的。 

  前面提到过JS函数库诞生的历史背景,那么这些函数库到底做的是什么呢?顾名思义,它们就是整合了各种常用功能的实现函数,并处理了各浏览器上的差异性,经过精炼的智慧结晶。下面,就让我们开始从jQuery这个函数库源码中体验JavaScript脚本语言之旅吧!

posted @ 2014-09-15 08:46  super1234  阅读(320)  评论(0编辑  收藏  举报