本章的主要内容:
- 语句
- 变量和数组
- 操作符
- 条件语句和循环语句
- 函数与对象
2.1 准备工作
编写JavaScript脚本不需要任何特殊软件,一个普通的文本编辑器和一个Web浏览器就足够了。
用JavaScript编写的代码必须通过HTML/XHTML文档才能执行。有两种方式可以做到这点。
第一种方式是将JavaScript代码放到文档标签中的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Example</title>
<script>
JavaScript goes here...
</script>
</head>
<body>
Mark-up goes here...
</body>
</html>
一种更好的方式是把JavaScript代码存为一个扩展名为.js的独立文件。典型的做法是在文档head部分放一个script标签,并且把它的src属性指向该文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Example</title>
<script src="file.js"></script>
</head>
<body>
Mark-up goes here...
</body>
</html>
但最好的做法是把script标签放到HTML文档的最后,/body标签之前;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Example</title>
</head>
<body>
Mark-up goes here...
<script src="file.js"></script>
</body>
</html>
这一种做法可以使浏览器更快的加载页面。
程序设计语言分为解释性和编译性两大类。Java或C++等语言需要一个编译器。编译器是一种程序,能够把用Java等高级语言编写出来的源代码翻译为直接在计算机上执行的文件。
解释性程序设计语言不需要编译器——它们仅需要解释器。对于JavaScript语言,在互联网环境下,Web浏览器负责完成有关的解释和执行工作。浏览器中的JavaScript解释器将直接读入源代码并执行。浏览器中如果没有解释器,JavaScript代码就无法执行。
2.2 语法
2.2.1 语句
用JavaScript编写的脚本,与其他语言编写出来的脚本一样,都由一系列的指令构成,这些指令叫做语句。只有按照正确的语法编写出来的语句才能得到正确的解释。JavaScript语句与英语中的句子很相似。它们都是构成任何一个脚本的基本单位。
2.2.2 注释
注释共分为三种形式分别是
单行注释://
多行注释:/…/
HTML风格的注释:
<!--这是HTML中的注释-->
请注意,HTML允许上面这样的注释跨越多个行,但JavaScript要求这种注释每行都必须在开头加上"<!–“来作为标志。因为JavaScript解释器在处理这种风格的注释时,与大家所熟悉的HTML做法不同,为避免发生混乱,最好不要在JavaScript脚本中使用这种风格的注释。建议大家使用”//“来注释单行,用”/*"注释多行。
2.2.3 变量
不像C和C++,JavaScript的变量的关键字就只有一个var,无论是定义整型,还是字符等类型只需一个var就可以实现,当然这种简单的同时也牺牲掉了一定的性能。
2.2.4 数据类型
JavaScript中几个最为重要的数据类型:
1.字符串
字符串有零个或多个字符构成。字符包括字母、数字、标点和空格。字符串必须包在引号 里,单引号或双引号都可以。
例如:
var mood="happy";
var mood='happy';
2.数值
如果想给一个变量赋一个数值,不用限制它必须是一个整数。JavaScript允许使用带小数点的数赋值,并且允许任意位小数。这样的数称为浮点数。
var age=33.25;
也可以使用负数。
var temperature=-20;
同时JavaScript也支持负浮点数;
var temperature=-20.333333;
3.布尔值
布尔数据只有两个可选值——true或false。
2.2.5 数组
字符串,数值和布尔值都是标量。如果某个变量是标量,它在任意时刻只能有一个值。如果想用一个变量来存储一组值,就需要使用数组(array)。
数组是指用一个变量表示一个值的集合,集合中的每个值都是这个数组的一个元素。
指定数组初始元素:
var beatles=Array(4);
向数组中添加元素的操作称为填充。
array[index]=element;
声明和填充数组的全过程:
var beatles=Array(4);
bealtes[0]="John";
beatles[1]="Paul";
beatles[2]="George";
beatles[3]="Ringo";
var beatles=Array("John","Paul","Geoge","Ringo");
关联数组
通过在填充数组时为每个新元素明确地给出下标来改变这种默认的行为。在为新元素给出下标时,不必局限于使用整数数字。可以使用字符串:
var lennon=Array();
lennon["name"]="John";
lennon["year"]="1940";
lennon["living"]=false;
这样的数组叫做关联数组,由于可以使用字符串来代替数字值,因而代码更加具有可读性。但是这并不是一个好习惯,并不推荐使用。
2.2.6 对象
与数组类似,对象也是使用一个名字表示一组值。对象的每个值都是对象的一个属性。
2.3 操作
要使用JavaScript做一些有用的工作,还需要能够进行计算和处理数据。也就是需要完成一些操作。
算数操作符:
加、减、乘、除这些算数操作中的每一种都必须借助于相应的操作符才能完成。
值得一提的是其"+"运算符还可以用于字符串的拼接
var message="I am feeling"+"happy";
甚至还可以把数值和字符串拼接起来(这里的拼接是一种实际上发生了一种隐式转换,将数值转换成了字符串格式)
var year=2005;
var message="This year is "+year;
2.4 条件语句
脚本的真正威力体现在它们还可以根据人们给出的各种条件做出决策。
if语句的基本语法:
if(condition){
statements;
}
2.4.1 比较操作符
比较操作符主要包括(==)、(!=)、(>)、(<)、(>=)、(<=)如:
var my_mood="happy";
var your_mood="sad";
if(my_mood==year_mood)
{alert("We both feel the same.");
}
但这里的==操作符并不严密,要使用较为严密的全等应该使用===,是比较严格的。不等的比较严格操作符为!==。
2.4.2 逻辑操作符
逻辑操作运算符主要包括与(&&)和或(||)。
2.5 循环语句
2.5.1 while循环
while(condition){
statements;
}
do…while循环
类似于if语句的情况,while循环的花括号部分所包含的语句有可能不被执行,因为对循环控制条件的求值发生在每次循环开始之前,所以如果循环控制条件首次求值结果是false,那些代码将一次也不会被执行。
在某些场合,我们希望那些包含在循环语句内部的代码至少执行一次。这时do循环是我们的最佳选择。下面是do循环的语法:
do{
statements;
}while(condition);
2.5.2 for循环
事实上for循环是while循环的一种变体。
while(condition){
statements;
increment;
}
for循环
for(initial condition;test condition; alter condition){
statements;
}
示例:
var beatles=Array("John","Paul","George","Ringo");
for(var count=0;count<beatles.length;count++){
alter(beatles[count]);
}
2.6 函数
如果需要多次使用同一段代码,可以把它们封装成一个函数,函数就是一组允许在你的代码里随时调用的语句。事实上,每个函数实际上是一个短小的脚本。
作为一种良好的习惯,应该先对函数做出定义再调用它们。
下面是一个简单示例:
function shout(){
var beatles=Array("John","Paul","George","Ringo");
for(var count=0;count<beatles.length;count++){
}
定义一个函数的语法:
function name(arguments){
statements;
}
变量的作用域
全局变量:可以在脚本中的任何位置被引用。
局部变量:只存在于声明它的那个函数的内部,在那个函数的外部是无法引用它的。
请记住,函数在行为方面应该像一个自给自足的脚本,在定义一个函数时,我们一定要把它内部的变量全部明确地声明为局部变量。如果你总是在函数里使用var关键字来定义变量,就能避免任何形式的二义性隐患。
2.7 对象
对象是一种非常重要的数据类型,但此前我们还没有认真对待它。对象是自包含的数据集合,包含在对象里的数据可以通过两种形式访问——属性和方法。
属性是隶属于某个特定对象的变量;
方法是只有某个特定对象才能调用的函数。
对象就是由一些属性和方法组合在一起而构成的一个数据实体。
在JavaScript里属性和方法都使用"点"语法来访问:
Object.property
Object.method()
2.7.1 内建对象
内建对象包含Array对象、Math对象、Date对象等
2.7.2 宿主对象
除了内建对象外,还可以在JavaScript脚本里使用一些已经预先定义好的其他对象。这些对象不是由JavaScript语言本身而是由它的运行环境提供的。具体到Web应用,这个环境就是浏览器。由这个浏览器提供的预定义对象被称为宿主对象。
宿主对象包括Form、Image和Element等。我们可以通过这些对象获取网页上的表单、图像和各种表单元素等信息。