JavaScript概述
JavaScript 诞生于1995年。它当时的目的是为了验证表单输入的验证。因为在JavaScript问世之前,表单的验证都是通过服务器端验证的。而当时都是电话拨号上网的年代,服务器验证数据是一件非常痛苦的事情。经过许多年的发展,JavaScript从一个简单的输入验证成为一门强大的编程语言。

一.什么是JavaScript
JavaScript是一种具有面向对象能力的、解释型的程序设计语言。更具体一点,它是基于对象和事件驱动并具有相对安全性的客户端脚本语言。因为他不需要在一个语言环境下运行,而只需要支持它的浏览器即可。它的主要目的是,验证发往服务器端的数据、增加Web互动、加强用户体验度等。
二.JavaScript特点
1.松散性
JavaScript语言核心与C、C++、Java相似,比如条件判断、循环、运算符等。但,它却是一种松散类型的语言,也就是说,它的变量不必具有一个明确的类型。
2.对象属性
JavaScript中的对象把属性名映射为任意的属性值。它的这种方式很像哈希表或关联数组,而不像C中的结构体或者C++、Java中的对象。
3.继承机制
JavaScript中的面向对象继承机制是基于原型的,这和另外一种不太为人所知的Self语言很像,而和C++以及Java中的继承大不相同。
三.JavaScript 核心
虽然JavaScript和ECMAScript通常被人们用来表达相同的含义,但JavaScript的含义却比ECMA-262中规定的要多得多。一个完整的JavaScript应该由下列三个不同的部分组成。
1.核心(ECMAScript)
2.文档对象模型(DOM)-----整合js,css,hetml
3.浏览器对象模型(BOM)--整合js和浏览器

ECMAScript介绍
由ECMAScript-262定义的ECMAScript与Web浏览器没有依赖关系。ECMAScript定义的只是这门语言的基础,而在此基础之上可以构建更完善的脚本语言。我们常见的Web浏览器只是ECMAScript实现可能的宿主环境之一。
既然他不依赖于Web浏览器,那么他还在哪些环境中寄宿呢?比如:ActionScript、ScriptEase 等。而他的组成部分有:语法、类型、语句、关键字、保留字、操作符、对象等。

ECMAScript版本
ECMAScript目前有四个版本,1、2、3、4、5 版本

Web浏览器对ECMAScript的支持
到了2008年,五大主流浏览器(IE、Firefox、Safari、Chrome、Opera)全部做到了与ECMA-262兼容。其中,只有Firefox力求做到与该标准的第4版兼容。

文档对象模型(DOM)
文档对象模型(DOM,Document Object Model)是针对XML但经过扩展用于HTML的应用程序编程接口(API,Application Programming Interface)。
DOM有三个级别,每个级别都会新增很多内容模块和标准。

浏览器对象模型(BOM)
访问和操作浏览器窗口的浏览器对象模型(BOM,Browser Object Model)。开发人员使用BOM可以控制浏览器显示页面以外的部分。而BOM真正与众不同的地方(也是经常会导致问题的地方),还是它作为 avaScript实现的一部分,至今仍没有相关的标准。

JavaScript版本
身为Netscape“继承人”的Mozilla 公司,是目前唯一沿用最初的JavaScript版本编号的浏览器开发商。在网景把JavaScript转手给Mozilla项目的时候,JavaScript在浏览器中最后的版本号是 1.3。后来,随着Mozilla继续开发,JavaScript版本号逐步递增。
四.开发工具集
代码编辑器:Notepad++。
浏览器:谷歌浏览器,火狐浏览器,IE 浏览器,IETest工具等。
如何使用JavaScript
一.创建一张HTML页面
对于JavaScript初学者,我们还是用比较普及和稳定的xhtml1.x来创建一张页面。很多时候,你无法记住xhtml1.x过渡性的标准格式。这个时候,建议打开Dreamweaver来获取。页面创建好后,编写一个最简单的JavaScript 脚本(简称JS脚本)。注意网页的编码格式及文件存储的编码
二.<Script>标签解析:<script>xxx</script>这组标签,是用于在html页面中插入js的主要方法。它主要有以下几个属性:
1.charset:可选。表示通过src属性指定的字符集。由于大多数浏览器忽略它,所以很少有人用它。
2.defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。由于大多数浏览器不支持,故很少用。
3.language:已废弃。原来用于代码使用的脚本语言。由于大多数浏览器忽略它,所以不要用了。
4.src(常用):可选。表示包含要执行代码的外部文件。
5.type(常用):必需。可以看作是language的替代品。表示代码使用的脚本语言的内容类型。
范例:type="text/javascript"。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>使用JavaScript</title>
</head>
<body>
<script type="text/javascript">
    alert('欢迎来到JavaScript世界!');
</script></body>
</html>

三.JS代码嵌入的一些问题
如果你想弹出一个</script>标签的字符串,那么浏览器会误解成JS代码已经结束了。解决的方法,就是把字符串分成两个部分,通过连接符‘+’来连接。

<script type="text/javascript">
    alert('</scr'+'ipt>');
</script>

一般来说,JS代码越来越庞大的时候,我们最好把他另存为一个.js文件,通过src引入即可。它还具有维护性高、可缓存(加载一次,无需加载)、方便未来扩展的特点。

<script type="text/javascript" src="demo1.js"></script>

这样标签内就没有任何JS代码了。但,要注意的是,虽然没有任何代码,也不能用单标签:

<script type="text/javascript" src="demo1.js" />;

也不能在里面添加任何代码src引入了js,alert里面的东西就不执行了:

<script type="text/javascript" src="demo1.js">alert('执行不到!')</script>

按照常规,我们会把<script>标签存放到<head>...</head>之间。但有时也会放在 body之间。
不再需要提供注释,以前为了让不支持JavaScript浏览器能够屏蔽掉<script>内部的代码,我们习惯在代码的前后用html注释掉,现在已经不需要了。

<script type="text/javascript">
    <!-- alert('欢迎!'); -->
</script>

平稳退化不支持JavaScript处理:<nosciprt>

<noscript>
    您没有启用JavaScript
</noscript>

JavaScript语法、关键保留字及变量
任何语言的核心都必然会描述这门语言最基本的工作原理。而JavaScript的语言核心就是ECMAScript,而目前用的最普遍的是第3版
一.语法构成
区分大小写
ECMAScript中的一切,包括变量、函数名和操作符都是区分大小写的。例如:text和Text表示两种不同的变量。
标识符
所谓标识符,就是指变量、函数、属性的名字,或者函数的参数。标识符可以是下列格式规则组合起来的一或多个字符:
1.第一字符必须是一个字母、下划线(_)或一个美元符号($)。
2.其他字符可以是字母、下划线、美元符号或数字。
3.不能把关键字、保留字、true、false和null作为标识符。
合法标识符例如:myName、book123等

注释(1.对代码进行说明,2.调试)
ECMAScript使用C风格的注释,包括单行注释和块级注释。
//单行注释
/*
* 这是一个多行
* 注释
*/

直接量(字面量literal)
所有直接量(字面量),就是程序中直接显示出来的数据值。
18              //数字字面量
'西西'          //字符串字面量
false           //布尔字面量
/js/gi          //正则表达式字面量
null            //对象字面量
在ECMAScript第3版中,像数组字面量和对象字面量的表达式也是支持的,如下:
{x:1, y:2}      //对象字面量表达式
[1,2,3,4,5]     //数组字面量表达式
二.关键字和保留字
ECMAScript-262描述了一组具有特定用途的关键字,一般用于控制语句的开始或结束,或者用于执行特定的操作等。关键字也是语言保留的,不能用作标识符。
break       else           new       var
case        finally         return    void
catch       for              switch    while
continue  function      this        with
default    if                 throw
delete     in                try
do          instanceof   typeof
ECMAScript-262还描述了另一组不能用作标识符的保留字。尽管保留字在JavaScript中还没有特定的用途,但它们很有可能在将来被用作关键字
abstract    enum           int             short
boolean    export          interface   static
byte          extends       long          super
char          final            native        synchronized
class         float            package    throws
const        goto             private       transient
debugger implements  protected  volatile
double      import         public
三.变量
ECMAScript的变量是松散类型的,所谓松散类型就是用来保存任何类型的数据。定义变量时要使用var操作符(var是关键),后面跟一个变量名(变量名是标识符)。

var box;
alert(box);

这句话定义了box变量,但没有对它进行初始化(也就是没有给变量赋值)。这时,系统会给它一个特殊的值--undefined(表示未定义)。
声明变量

var box        //声明变量
var box = 100  //声明变量并且初始化
alert(box)     //以弹窗的方式打印出box的值100

所谓变量,就是可以初始化后可以再次改变的量。ECMAScript属于弱类型(松散类型)的语言,可以同时改变不同类型的量。(PS:虽然可以改变不同类型的量,但这样做对于后期维护带来困难,而且性能也不高,导致成本很高!)

var boxString = '西西';    //String将要创建的类型
boxString = 100;
alert(boxString);

重复的使用var声明一个变量,只不过是一个赋值操作,并不会报错。但这样的操作是比较二的,没有任何必要。

var box= '西西';
var box= 'xixi';

还有一种变量不需要前面var关键字即可创建变量。这种变量和var的变量有一定的区别和作用范围

box= '西西';

当你想声明多个变量的时候,可以在一行或者多行操作。

var box= '西西';var age= 100;

而当你每条语句都在不同行的时候,你可以省略分号。(PS:这是ECMAScript支持的,但绝对是一个非常不好的编程习惯,切记不要)。

var box= '西西' var age= 100
alert(box)

可以使用一条语句定义多个变量,只要把每个变量(初始化或者不初始化均可)用逗号分隔开即可,为了可读性,每个变量,最好另起一行,并且第二变量和第一变量对齐(PS:这些都不是必须的)。

<script>
var box= '西西',
age = 18,
height = 77;
alert(box)
alert(age)
alert(height)
</script>

<script>xxx</script>这组标签,是用于在html页面中插入js的主要方法。它主要有以下几个属性:
1.charset:可选。表示通过src属性指定的字符集。由于大多数浏览器忽略它,所以很少有人用它。
2.defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。由于大多数浏览器不支持,故很少用。
3.language:已废弃。原来用于代码使用的脚本语言。由于大多数浏览器忽略它,所以不要用了。
4.src(常用):可选。表示包含要执行代码的外部文件。
5.type(常用):必需。可以看作是language的替代品。表示代码使用的脚本语言的内容类型。
范例:type="text/javascript"。