[从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脚本语言之旅吧!
[从jQuery看JavaScript]-JavaScript的更多相关文章
- 最新的jQuery插件和JavaScript库
每一个前端开发人员很清楚的重要性和功能的JavaScript库提供.它提供了一个简单的接口,用于构建快速动态的接口,而无需大量的代码. 谢谢你的超级从事jQuery开发者社区,人始终是创造新的和令人惊 ...
- Jquery第一篇【介绍Jquery、回顾JavaScript代码、JS对象与JQ对象的区别】
什么是Jquery? Jquey就是一款跨主流浏览器的JavaScript库,简化JavaScript对HTML操作 就是封装了JavaScript,能够简化我们写代码的一个JavaScript库 为 ...
- 【JQuery】jquery对象和javascript对象即DOM对象相互转换
jQuery 对象是通过 jQuery 包装DOM 对象后产生的对象.jQuery 对象是 jQuery 独有的,其可以使用 jQuery 里的方法,但是不能使用 DOM 的方法:例如: $(&quo ...
- jquery对象和javascript对象即DOM对象相互转换
jquery对象和javascript对象即DOM对象相互转换 1. DOM 对象转成 jQuery 对象对于已经是一个 DOM 对象,只需要用 $() 把DOM对象包装起来,就可以获得一个 jQue ...
- 想要学好JQuery看这里
一.简介 jQuery 库可以通过一行简单的标记被添加到网页中 jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: HTML 元素选取 HTML 元素操作 CSS 操 ...
- [从jQuery看JavaScript]-匿名函数与闭包(Anonymous Function and Closure)【转】
(function(){ //这里忽略jQuery所有实现 })(); 半年前初次接触jQuery的时候,我也像其他人一样很兴奋地想看看源码是什么样的.然而,在看到源码的第一眼,我就迷糊了.为什么只有 ...
- [从jQuery看JavaScript]-变量与作用域链
jQuery片段: var // Will speed up references to window, and allows munging its name. window = this, // ...
- [从jQuery看JavaScript]-匿名函数与闭包
jQuery片段: (function(){ //这里忽略jQuery所有实现 })(); 半年前初次接触jQuery的时候,我也像其他人一样很兴奋地想看看源码是什么样的.然而,在看到源码的第一眼,我 ...
- [从jQuery看JavaScript]-注释(comments)
jQuery片段: /*! * jQuery JavaScript Library v1.3.2 * http://jquery.com/ * * Copyright (c) 2009 John Re ...
- [从jQuery看JavaScript]-匿名函数与闭包(Anonymous Function and Closure)
http://blog.csdn.net/natineprince/article/details/4759533 jQuery片段: (function(){ //这里忽略jQuery所有实现 ...
随机推荐
- python学习笔记——信号模块signal
基于python学习笔记——多进程间通信——Linux信号基础的学习基础,进一步学习Python标准库中的signal模块. 尽管signal是python中的模块,但是主要针对UNIX平台(比如Li ...
- 竞态条件与sigsuspend函数
一.利用pause和alarm函数实现sleep函数 #include <unistd.h> int pause(void); pause函数使调用进程挂起直到有信号递达.如果信号的处理动 ...
- 从错误中学python(4)——最小公约数与辗转相除法
题目 给你两个正整数a和b, 输出它们的最大公约数 辗转相除法 辗转相除法的步骤 def gcd(b,a): b,a=a,b%a if a==0: return b else: return gcd( ...
- Spring Boot热部署(springloader)
使用方式一 在pom.xml文件添加依赖包: <plugin> <groupId>org.springframework.boot</groupId> <ar ...
- python标准库介绍——8 operator 模块详解
==operator 模块== ``operator`` 模块为 Python 提供了一个 "功能性" 的标准操作符接口. 当使用 ``map`` 以及 ``filter`` 一类 ...
- [hihoCoder] #1122 : 二分图二•二分图最大匹配之匈牙利算法
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上一回我们已经将所有有问题的相亲情况表剔除了,那么接下来要做的就是安排相亲了.因为过年时间并不是很长,所以姑姑希望能够尽可 ...
- Rsync启动停止脚本
网上找了个完善的rysnc启停脚本:http://linux5588.blog.51cto.com/65280/779000 rsync源码: [root@lanny d4]# cat rsync_s ...
- python 中安装pandas
由于计算arima模型需要用到pandas,费尽千辛万苦找到了一个下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/,在这里能下载到很多我们要用的模块.找到 ...
- python @property使用详解
1.@property,@xx.setter的作用把方法变成属性@property获取属性@xx.setter设置属性 2.使用示例 #@property使用 class Lang(object): ...
- 开发song-list组件;
注意点: 1.song-list的高度是通过计算动态获取的: 2.可以直接在{{}}调用函数,来显示函数的返回值: <template> <div class="song- ...