什么是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脚本语言之旅吧!

[从jQuery看JavaScript]-JavaScript的更多相关文章

  1. 最新的jQuery插件和JavaScript库

    每一个前端开发人员很清楚的重要性和功能的JavaScript库提供.它提供了一个简单的接口,用于构建快速动态的接口,而无需大量的代码. 谢谢你的超级从事jQuery开发者社区,人始终是创造新的和令人惊 ...

  2. Jquery第一篇【介绍Jquery、回顾JavaScript代码、JS对象与JQ对象的区别】

    什么是Jquery? Jquey就是一款跨主流浏览器的JavaScript库,简化JavaScript对HTML操作 就是封装了JavaScript,能够简化我们写代码的一个JavaScript库 为 ...

  3. 【JQuery】jquery对象和javascript对象即DOM对象相互转换

    jQuery 对象是通过 jQuery 包装DOM 对象后产生的对象.jQuery 对象是 jQuery 独有的,其可以使用 jQuery 里的方法,但是不能使用 DOM 的方法:例如: $(&quo ...

  4. jquery对象和javascript对象即DOM对象相互转换

    jquery对象和javascript对象即DOM对象相互转换 1. DOM 对象转成 jQuery 对象对于已经是一个 DOM 对象,只需要用 $() 把DOM对象包装起来,就可以获得一个 jQue ...

  5. 想要学好JQuery看这里

    一.简介 jQuery 库可以通过一行简单的标记被添加到网页中 jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: HTML 元素选取 HTML 元素操作 CSS 操 ...

  6. [从jQuery看JavaScript]-匿名函数与闭包(Anonymous Function and Closure)【转】

    (function(){ //这里忽略jQuery所有实现 })(); 半年前初次接触jQuery的时候,我也像其他人一样很兴奋地想看看源码是什么样的.然而,在看到源码的第一眼,我就迷糊了.为什么只有 ...

  7. [从jQuery看JavaScript]-变量与作用域链

    jQuery片段: var // Will speed up references to window, and allows munging its name. window = this, //  ...

  8. [从jQuery看JavaScript]-匿名函数与闭包

    jQuery片段: (function(){ //这里忽略jQuery所有实现 })(); 半年前初次接触jQuery的时候,我也像其他人一样很兴奋地想看看源码是什么样的.然而,在看到源码的第一眼,我 ...

  9. [从jQuery看JavaScript]-注释(comments)

    jQuery片段: /*! * jQuery JavaScript Library v1.3.2 * http://jquery.com/ * * Copyright (c) 2009 John Re ...

  10. [从jQuery看JavaScript]-匿名函数与闭包(Anonymous Function and Closure)

    http://blog.csdn.net/natineprince/article/details/4759533   jQuery片段: (function(){ //这里忽略jQuery所有实现 ...

随机推荐

  1. Winform下让你的DataGridView控件支持点语法(即显示list中的子对象属性)

    前言: 不想看前言的直接去看正文吧!另外文末有彩蛋. DataGridView可以支持多种数据源格式,比如DataTable和List. DataTable没啥特殊的,本身就是一张二维的表,可以和Da ...

  2. android 自定义ViewSwipeBackHelper,实现左滑结束Activity

     https://github.com/Jude95/SwipeBackHelper Git上看到一个基于SwipeBackLayout的实现,可以让我们在使用过程中在不使用物理返回键的情况下舍去了返 ...

  3. this 与 super 反复问题?

    我们都知道 this  和 super keyword,在 调用 构函数的时候, 都必须写在第一行中. this 调用的是当前的类的构造函数. super 调用的是父类的构造函数! this和supe ...

  4. Spring横切面(advice),增强(advisor),切入点(PointCut)(转)

    Spring横切面(advice),增强(advisor),切入点(PointCut)的一点理解: 1.Spring管理事务有2种,其中一种是HibernateTransactionManager管理 ...

  5. sublim3常用插件安装

    1首先需要安装插件管理器Package Control,点击View > Show Console菜单,输入以下代码,按回车运行即可.说明:以下只对st3有效 import urllib.req ...

  6. 由于CentOS的系统安装了epel-release-latest-7.noarch.rpm 导致在使用yum命令时出现Error: xz compression not available问题

    由于CentOS6的系统安装了epel-release-latest-7.noarch.rpm 导致在使用yum命令时出现Error: xz compression not available问题.解 ...

  7. 基于Unity3d 引擎的Android游戏优化

    原文地址:http://blog.csdn.net/jixuguo/article/details/9018669 近期项目进入收尾阶段,之前对项目做了非常多优化,mesh合并 .降低DrawCall ...

  8. linux 2.6.xx自动加载kvm模块

    在文件夹/etc/udev/rules.d/中添加文件65-kvm.rules,文件内容如下: KERNEL=="kvm", MODE="0660", GROU ...

  9. 李洪强iOS之集成极光推送三iOS集成指南

    李洪强iOS之集成极光推送三iOS集成指南 SDK说明 适用版本 本文匹配的 SDK版本:r2.1.5 以后.查看最近更新了解最新的SDK更新情况.使用Xcode 6及以上版本可以使用新版Push S ...

  10. java 多线程4: java线程的优先级

    Java线程的优先级取值范围是1 (Thread.MIN_PRIORITY ) 到 10 (Thread.MAX_PRIORITY ).如果没有设置, 线程默认的优先级是NORM_PRIORITY.这 ...