学习变量
- 在为变量第一次赋值时定义。
- 使用关键字var定义变量。
name = "姓名"; //定义name变量
alert(name); //显示name变量的值
var product = "自行车"; //利用关键字var定义变量
alert(product);
说明:这两种定义变量的方法类似,但是通过var定义变量会有一些不同,如在MyEclipse中通过Content Assist功能显示当前可用的变量时就是根据var来寻找这些变量的。所以建议使用var定义javascript变量。var可以在一行定义多个变量,中间使用逗号分隔。javascript变量可以存放不同类型的值,变量当前值类型就是最后一次为变量赋予值的类型。
学习原始类型
javascript用5种原始类型,即Undefined、Null、Boolean、Number和String(注:object:变量是引用类型或Nulll类型)。javascript使用typeof运算符获得一个变量的类型,可以用typeof判断是否属于原始类型(typeof返回的是字符串),以及属于哪一个原始类型。下面是例子.。
var iValue = 20; //定义整形变量iValue
var sValue ="字符串"; //定义字符串变量
alert(typeof iValue); //输出number
alert(typeof sValue); //输出string
Number类型是javascript中最特殊的原始类型。这种类型既可以表示32位整数,也可以表示64位浮点数。虽然可以使用八进制或十六进制数表示Number类型的值,但所有的数学运算返回的值都是十进制结果。
String是javascript中唯一没有固定大小的原始类型。它可以存储0个或更多的UCS2编码的字符(UCS2是两个字节长度的Unicode编码,Unicode编码是一种国际通用的字符集,可以表示世界上所有语言)。String类型的值可以使用双引号和单引号表示。由于String类型值是以UCS2编码格式保存的,因此所有的字符串长度都是1,如中文的每一个汉字的长度是1。如果要以字节为单位获得字符串的长度,可以编写如下代码:
//使用String的prototype为String对象添加新方法
String.prototype.len = function()
{
//将每一个中文替换成##
return this.replace(/[^\x0-\xf]/g,"##").length;
}
var sName = "a 聪慧b"; //定义包含中文和英文的字符串变量sName
alert(sName.lenB()); //显示6
在上面的代码中使用了原始的方式向String类(String类是string原始类型的对象表示形式)中添加了一个lenB方法,用来以字节为单位获得字符串的长度。基本原理是将每一个中文使用正则表达式替换成“##”,这样一个汉字就变成了两个“##”,因此也就能以字节为单位得到字符串的长度了。
由于在javascript中有一些特殊的符号,如果这些特殊的符号要想在字符串中表示的话,就需要使用如下的转义符号:
- \n 换行
- \t 制表符
- \b 空格
- \r 回车
- \f 换页符
- \ 反斜杠
- \’ 单引号
- \" 双引号
- \0nnn 八进制数nnn(n的值从0~7)表示的字符
- \xnn 十六进制数nn(n的值从0~F)表示的字符
- \unnnn 十六进制数nnnn(n的值从0~F)表示的Unicode字符
掌握类型转换
- toString方法:将相应类型的值转换成字符串
- parseInt函数:将字符串转换成整型值
- parseFloat函数:将字符串转换成浮点值
javascript还可以使用强制类型转换来处理变量值的类型,下面是JavaScript支持的三种强制类型转换。
- Boolean(value):把value中的值转换成Boolean类型。
- Number(value):把value中的值转换成数字(整数或浮点数)。
- String(value):把value中的值转换成字符串。
学习函数与函数调用
函数需要使用关键字function来声明,函数的基本语法如下:
function funName(arg0, arg1, ..., argN)
{
statements
}
函数可以加多个参数,中间使用逗号分隔。下面的代码是一个具体的函数声明。
//定义并实现一个javascript函数
function greet(sName)
{
alert("你好" + sName);
}
调用greet函数的代码如下:
greet("bill");
javascript中的函数没有返回类型,但也可以使用return语句来返回值,代码如下:
//求n1和n2的和
function sum(n1, n2)
{
return n1 + n2; //返回n1和n2之和
}
由于javascript是若类型语言,因此在javascript中的函数不能重载,如果函数重名,后面的会覆盖前面的。
在JavaScript中,函数还可以使用arguments对象实现动态参数,也就是在声明函数时并不需要定义参数,而在函数体内使用arguments对象来获得当前函数的参数值,如下面的代码所示。
//求不定数目的Number类型值的和
function sum()
{
var n = 0;
//从arguments对象中取出sum函数的参数值,并将这些参数值相加
for(var i = 0; i < arguments.length; i++)
{
n += arguments[i]; //迭代求和
}
return n;
}
下面的代码调用了这个sum函数。
alert(sum(1,2,3));
在Javascript中,一个函数实际上相当于一个对象。也就是说,可以使用Function类来建立任何的函数,使用Function类创建函数的语法如下:
var funName = new Function(arg1, arg2, ...,argN, functionBody);
下面的代码使用Function类创建了上面的fnSum函数
var fnSum = new Function("n1", "n2", "return n1+n2");
下面的代码调用了fnSum函数
alert(fnSum(-1, 20)); //显示19
学习类和对象
Javascript中有一些预定义的类,如Object、Array、String、Number等。在创建对象时,要使用new关键字,如下面的代码创建了一个数组对象。
var aValues = new Array(); //定义一个数组变量
aValues[0] = "v1";
aValues[1] = "v2";
aValues[2] = "v3";
如果类的构造方法没有参数,也可以将括号省略,代码如下:
var aValues = new Array; //用省略括号的方式定义一个数组变量
在JavaScript中自定义类是非常灵活的,可以使用下面的3种方法来自定义Javascript类,具体这里不再展开。
- 工厂方式(动态添加类成员)
- 构造函数方式
- 原型方式