JavaScript基础术语和概念总结一、什么是JavaScript ?JavaScript 是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。
使用它的目的是与HTML超文本标记语言、Java 脚本语言(Java 小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用。
它的出现使得信息和用户之间不仅只是一种显示和浏览的关系,而是实现了一种实时的、动态的、可交式的表达能力。
二、JavaScript的特点JavaScript 是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言,主要用于创建具有交互性较强的动态页面。
其具有以下特点:1)基于对象:JavaScript 是基于对象的脚本编程语言,能通过DOM(文档结构模型)及自身提供的对象及操作方法来实现所需的功能。
2)事件驱动:JavaScript 采用事件驱动方式,能响应键盘事件、鼠标事件及浏览器窗口事件等,并执行指定的操作。
3)解释性语言:JavaScript 是一种解释性脚本语言,无需专门编译器编译,而是在嵌入JavaScript 脚本的HTML 文档载入时被浏览器逐行地解释,大量节省客户端与服务器端进行数据交互的时间。
4)实时性:JavaScript 事件处理是实时的,无须经服务器就可以直接对客户端的事件做出响应,并用处理结果实时更新目标页面。
5)动态性:JavaScript 提供简单高效的语言流程,灵活处理对象的各种方法和属性,同时及时响应文档页面事件,实现页面的交互性和动态性。
6)跨平台:JavaScript 脚本的正确运行依赖于浏览器,而与具体的操作系统无关。
只要客户端装有支持JavaScript 脚本的浏览器,JavaScript 脚本运行结果就能正确反映在客户端浏览器平台上。
7)开发使用简单:JavaScript 基本结构类似C 语言,采用小程序段的方式编程,并提供了简易的开发平台和便捷的开发流程,就可以嵌入到HTML 文档中供浏览器解释执行。
同时JavaScript 的变量类型是弱类型,使用不严格。
8)相对安全性:JavaScript 是客户端脚本,通过浏览器解释执行。
它不允许访问本地的硬盘,并且不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互,从而有效地防止数据的丢失。
三、JavaScript和Java的区别虽然JavaScript和Java有着紧密的关系,但是确实由两家不同的公司开发的不同的两个不同产品。
Java是 SUN公司推出的新一代面向对象的程序设计语言,特别适合于Internet应用程序开发;而JavaScript是Netscape 公司的产品,其目的是为了扩展Netscape Navigator 功能,而开发的一种可以嵌入Web页面中的基于对象和事件驱动的解释性语言,它的前身是Live Script;而Java 的前身是Oak 语言。
其异同点主要是以下几个方面:1)基于对象和面向对象:Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象。
而JavaScript是脚本语言,它是一种基于对象和事件驱动的编程语言。
2)代码格式的不同:Java是一种与HTML无关的格式,其代码以字节代码的形式保存在独立的文档中。
JavaScript 的代码是一种文本字符格式,可以直接嵌入 HTML 文档中,并且可动态装载。
编写 HTML 文档就像编辑文本文件一样方便。
四、JavaScript的基本数据类型在JavaScript中的四种基本数据类型:数值(整数和实数)、字符串型(用“”或者‘’括起来的字符或者数值)、布尔型(true或false表示)和空值。
在JavaScript中基本数据类型可以是常量,也可以是变量。
举例:1)字符串类型:---转义序列:\b 回退\f 换页\n 换行\r 回车符\t 制表符\’单引号\”双引号\\ 反斜杠2)数字类型:浮点数:12.568,整数:2563)布尔值类型:Boolean:true,false4)空值(Null):代表变量什么也不是5)未定义值(Undefined):var a//变量a 这时的状态五、JavaScript的变量变量名必须以字母或下划线开始,其他部分可以使用数字、字母、美元符和下划线构成。
JavaScript变量名区分大小写,可使用骆驼命名法:变量名以一个小写字母开始,后面的单词首字母大写且没有空格。
变量名声明以关键字var开始。
六、HTML中如何使用JavaScript?JavaScript的使用分为两种方式,一种是直接使用,另一种就是通过事件机制使用直接使用HTML中的javascript代码块会让浏览器的控制程序交给相应的javascript解释器去完成,如果是自定义的函数,javascript是不会将其执行的,除非我们在javascript代码块中直接调用了该函数,如:“直接存在”代码中的Say()函数一样,处理函数外,其他的凡在javascript代码块中存在的javascript语句,都会被直接解释并执行。
间接使用针对javascript中的函数(自定义和系统自带)说的,通过javascript的事件机制实现,其事件的具体体现就是HTML为响应这个功能而在标签中添加的一些属性,其描述的是发生在html元素上的某些行为。
具体事件如下图所示:七、JavaScript的运行机制JavaScript是一种描述性的脚本语言,它与Java或者C#等编译性语言不同之处在于它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行。
如果不了解JavaScript的运行的机制或者不能掌握JavaScript的执行顺序,那么你就不能很好的驾驭它。
那么JavaScript是怎么运行的呐?首先,我们先来了解几个重要的术语:1、代码块JavaScript中的代码块是指<script>标签分割的代码片段。
例如:Js就是按照代码块来进行编译和执行的,注意:代码块之间是相互独立的,但是变量和方法是共享的。
我们运行后会发现这种情况:上面的代码中代码块一中运行报错,但不影响代码块二的执行,这就是代码块间的独立性,而代码块二中能调用到代码一中的变量,则是块间共享性。
2、声明函数与赋值式函数Js中的函数定义有2种:声明式函数与赋值式函数声明式函数与赋值式函数的区别在于:在JS的预编译期,声明式函数将会先被提取出来,然后才按顺序执行js代码。
如果Fn()放在fn()之后的话,则会出现函数未定义错误。
3、预编译期与执行期Js的解析过程分为两个阶段:预编译期(预处理)与执行期。
预编译期JS会对本代码块中的所有声明的变量和函数进行处理(类似与C语言的编译),但需要注意的是此时处理函数的只是声明式函数,而且变量也只是进行了声明但未进行初始化以及赋值。
举例说明:<script type="text/javascript">Fn(); //执行结果:"执行了函数2",同名函数后者会覆盖前者function Fn(){ //函数1alert("执行了函数1");}function Fn(){ //函数2alert("执行了函数2");}</script><script type="text/javascript">Fn(); //执行结果:"执行了声明式函数",在预编译期声明函数及被处理了,所以即使Fn()调用函数放在声明函数前也能执行。
function Fn(){ //声明式函数alert("执行了声明式函数");}var Fn = function(){ //赋值式函数alert("执行了赋值式函数");}</script>看完上面几个术语后,相信大家对js的运行机制又有了新的认识,现在我们看个例子:<script type="text/javascript">Fn(); //浏览器报错:"undefined"</script><script type="text/javascript">function Fn(){ //函数1alert("执行了函数1");}</script>我们上面说了JS是按照代码块来顺序执行的,其实完整的说应该是按照代码块的预处理和执行的,也就是说预处理的只是执行到的代码块的声明函数和变量,而对于还未加载的代码块是没法进行预处理的,这就是边编译边处理的核心所在。
小结:js的处理机制step 1. 读入第一个代码块。
step 2. 做语法分析,有错则报语法错误(比如括号不匹配等),并跳转到step5。
step 3. 对var变量和function定义做“预编译处理”(永远不会报错的,因为只解析正确的声明)。
step 4. 执行代码段,有错则报错(比如变量未定义)。
step 5. 如果还有下一个代码段,则读入下一个代码段,重复step2。
step6. 结束。