JavaScript概述
JavaScript是一门高端的、动态的、弱类型的编程语言。
// 所有在双斜线之后的内容都属于注释。
// 仔细阅读这里的注释,它们对JAvaScript代码做了注释。
变量是表示值的一个符号名字。
变量是通过var关键字声明的。
var x; // 声明一个变量x <br>
值可以通过等号赋值给变量
x = 0; //现在变量x的值为0 <br>
x // =>0;通过变量获取其值
JavaScript支持多种数据类型
x = 1; // 数字
x = 0.01; // 整数和实数共用一种数据类型
x = "hello world"; // 由双引号的文本构成的字符串
x = 'JavaScript'; // 单引号的文本同样构成字符串
x = true; // 布尔值
x = false; // 另一个布尔值
x = null; // null是一个特殊的值,意思是空
x = undefined; // undefined和null非常类似
JavaScript中的最重要的类型是对象
对象是名/值对的集合,或字符串到值映射的集合
var book={ //对象是由花括号括起来的
topic:"JavaScript", //属性"topic"的值是"JavaScript"
fat:true //属性"fat"的值是true
}; //右花括号标记了对象的结束
通过"."或"[]"来访问对象属性
book.topic //=>"JavaScript"
book["fat"] //=>true:另外一种获取属性的方式
book.author="xufang"; //通过赋值创建一个新属性
book.contents={}; //{}是一个空对象,它没有属性
JavaScript同样支持数组(以数字为索引的列表)
var primes=[2,3,5,7]; //拥有4个值的数组,由"["和"]"划定边界
primes[0] //=>2:数组中的第一个元素(索引为0)
primes.length; //=>4:数组中的元素个数
primes[primes.length-1] //=>7:数组的最后一个元素
primes[4]=9; //通过赋值来添加新元素
primes[4]=11; //或通过赋值来改变已有的元素
var empty=[]; //[]是空数组,它具有0个元素
empty.length //=>0
数组和对象中都可以包含另一个数组或对象:
var points={
{x:0,y:0}, //具有两个元素的数组
{x:1,y:1} //每个元素都是一个对象
};
var data={ //一个包含两个属性的对象
trial1:[[1,2],[3,4]], //每个属性都是数组
trial2:[[2,3],[4,5]], //数组的元素也是数组
}
上段代码中通过方括号定义数组和通过花括号定义对象属性名和属性值之间的映射关系的语法称为初始化表达式(initializer expression)
JavaScript中最常见的表达式写法是下面代码这样使用运算符(operator):
//运算符作用于操作数,生成一个新的值
//最常见的是算术运算符
3+2 //=>5:加法
3-2 //=>1:减法
3*2 //=>6:乘法
3/2 //=>1.5:除法
point[1].x - points[0].x //=>1:更复杂的操作数也能照常工作
"3" + "2" //=>"32":+可以完成加法运算也可以作字符串连接
//JavaScript定义了一些算术运算符的简写形式
var count=0; //定义一个变量
count++; //自增1
count--; //自减1
count+=2; //自增2:和"count=count+2"写法一样
count*=3; //自乘3:和"count=count*3"写法一样
count; //=>6:变量本身也是一个表达式
//相等关系运算符用来判断两值是否相等
//不等、大于、小于运算符的运算结果是true或false
var x=2,y=3; //这里的=等号是赋值的意思,不是比较相等
x == y //=>false:相等
x != y //=>true:不等
x < y //=>true:小于
x <= y //=>true:小于等于
x > y //=>false:大于
x >= y //=>false:大于等于
"two" == "three" //=>false:两个字符串不相等
"two" > "three" //=>true:"tw"在字母表中的索引大于"th"
false == (x > y) //=>true:false和false相等
//逻辑运算符是对布尔值的合并和求反
(x == 2) && (y == 3) //=>true:两个比较都是true,&&表示"与"
(x > 3) || (y < 3) //=>false:两个比较不都是true,||表示"或"
!(x == y) //=>true:求反
如果JavaScript中的“短语”是表达式的话,那么整个句子就称作语句(statement)
函数是带有名称(named)和参数的JavaScript代码段,可以一次定义多次调用。
function plus1(x){ //定义了名为plus1的一个函数,带有参数x
return x+1; //返回一个比传入的参数大的值
} //函数的代码块是由花括号包裹起来的部分
plus1(y) //=>4:y为3,调用函数的结果为3+1
var square=function(){ //函数是一种值,可以赋值给变量
return x*x; //计算函数的值
}; //分号标识了赋值语句的结束
square(plus(y)) //=>16:在一个表达式中调用两个函数
当将函数和对象合写在一起时,函数就变成了“方法”(method)
//当函数赋值给对象的属性,我们称为
// "方法",所有的JavaScript对象都含有方法
var a=[]; //创建一个空数组
a.push(1,2,3) //push()方法向数组中添加元素
a.reverse(); //另一个方法:将数组元素的次序反转
//我们也可以定义自己的方法,"this"关键字是对定义方法的对象的引用,这里的例子是上文中提到的包含两个点位置信息的数组
points.dist=function(){ //定义一个方法用来计算两点之间的距离
var p1=this[0]; //通过this获取对当前数组的引用
var p2=this[1]; //并取得调用的数组前两个元素
var a=p2.x - p1.x; //x坐标轴上的距离
var b=p2.y-p1.y; //y坐标轴上的距离
return Math.sqrt(a*a+b*b) //用Math.sqrt()来计算平方根
}
points.dist(); //=>1.414:求得两个点之间的距离
JavaSctipt是一种面向对象的编程语言
//定义一个构造函数以初始化一个新的Point对象
function Point(x,y){ //按照惯例,构造函数均以大写字母开始
this.x=x; //关键字this指代初始化的实例
this.y=y; //将函数参数存储为对象的属性
} //不需要return
//使用new关键字和构造函数来创建一个实例
var p=new Point(1,1); //平面几何中的点(1,1)
//通过给构造函数的prototype对象赋值
//来给Point对象定义方法
Point.prototype.r=function(){
return Math.sqrt(
this.x*this.x+this.y*this.y //this指代调用这个方法的对象
);
}
//Point的实例对象p(以及所有的Point实例对象)继承了方法r()
p.r();