1数据类型
数,JavaScript的数的类型包括了像Java这样的语言中的若干类型。
整数,在javascript中,可以以3中不同的基数表示整数,基数10、基数8、基数16。
十进制,前面没有零的整数。
八进制,以零大头的整数。如:056
十六进制,以0x或0X打头的整数。如:0x5F
浮点数可以包括小数部分。
字符串,含有单引号或双引号包围的0个或更多个字符。
boolean布尔值有两个true和false。
boolean对象的方法
toString() 将布尔值转换为字符串,并且返回结果。
valueOf() 返回 Boolean 对象的原始值
空值,在javascript中由术语null表示。
javascript属于松散类型的编程语言,当建立变量时,没有定义字面量或变量的类型,而且类型能根据上下文随时改变。Javascript已经增加了parseInt()和parseFloat()函数,这两个函数分别用来将字符串转变成整数或浮点数。
2变量
可以使用var命令声明变量。如:var example;
给变量赋值采用=号字符。变量名必须以字母或下划线_打头,其余字符可以包括数字。
3表达式
javascript有几种类型的表达式:
赋值表达式:给变量赋值
算术表达式:数的运算
字符串表达式:字符串的运算
逻辑表达式:布尔值的运算
javascript的赋值运算符:=、+=、-=、*=、/=、%=
算术运算符:+ 、-、*、/。
逻辑运算符:&&、||、!
比较运算符:==、!=、>、<、>=、<=。
条件运算符:(条件)?var1:var2
字符串运算符:+,将两个运算符合并。
4 if-else结构
if(条件){
javascript的代码;
}else if{
javascript的代码;
}else{
javascript的代码;
}
5函数及其使用
函数的定义,函数由function语句定义,function语句需要一个函数名、将传递到函数的一些列参数或变元以及命令块。
function 函数名(参数,变元){
命令块;
}
例如:
function printName(name){
document.write("<B><I>");
document.writeln(name);
document.write("</B></I>");
}
当调用函数时,变量和字面量均可作为变元传递。
如果变量传递到函数,改变函数内的参数的值不会改变传递到函数的变量值。
参数仅仅在函数生命期内有效。
函数内声明的变量称为局部变量,函数外生命的变量在整个脚本内均有效的变量成为全局变量。
函数的返回结果,函数的返回结果是由return语句返回的。return语句能够用来返回可计算出单一值的任何有效表达式。
*********eval()函数可以将字符串转换成数字,eval("10*10")将返回100。********
递归函数
递归指函数调用其自己的情形,这中类型的函数称为递归函数。
function factorial(number){
if(number>1){
return number*factorial(number-1);
}else{
return number;
}
}
6对象
javascript可以利用函数建立定制的对象。需要定义对象的属性以及给对象加入方法:
function student(name,age,grade){
this.name=name;
this.age=age;
this.grade=grade;
//这是对象的属性。this在javascript中起着特殊的作用,用于表示当前的对象。
function display(){
document.writeln("Name:"+this.name);
document.writeln("Age:"+this.age);
document.writeln("grade:"+this.grade");
//这是对象的方法。
}
}
student1=new student("Bob",10,6);
对象可以通过.点运算符来调用其中的属性和方法。student1.display();
关联数组
JavaScript中,数组时由单个变量表示的值的有序集合。javascript的数组并不是只有唯一的数据类型,数组中的每个成员可以取不同类型的值。
Math.ceil(),返回大于变元值的最为接近的整数。
Math.floor(),返回小于变元值的最为接近的整数。
7创建数组
一个专用的关键词new调用JavaScript函数为数组在内存中分配空间。一个Array()函数的可选参数可以在数组创建时指定数组要使用的元素个数,JavaScript不要求去给定数组元素的个数,用户可以随时改变数组的大小。例:
var USStates=new Array(51);
数组的长度是数组中所包含单元的个数。可以使用数组的length属性来获得数组的长度。如USStates.length
注意,改变数组的length的值时,如果变得比本来的个数小将会截取掉数组中的元素。如xxx.length=0将会把数组xxx的内容清空。
数组中的document对象
当载入文档时,浏览器将为文档中相同的对象创建一个数组。如用户的页面包括两个<form>标记对,在文档中就会出现两个表弟呢,浏览器为文档创建表单对象的数组,这些表单的引用如下:
document.forms[0]
document.forms[1]
document对象的索引值是根据对象的自如顺序分配。但最好使用名称引用。
<html>
<head>
<title>数组</title>
<script language="javascript">
<!--
function test(){
var t=new Array(3);
t[0]="I";
t[1]="love";
t[2]="you";
for(var i=0;i<3;i++){
document.write(t[i]+" ");
}
}
//-->
</script>
</head>
<body onLoad="test();">
</body>
</html>
二维数组
当JavaScript的数组中的所有单元值都只有基本类型时称这种数组为一维数组。当数组中的单元值是又一种数组时,就形成了二维数组。
anotherArray=new Array('one','two','three');
myArray=new Array(1,2,anotherArray);
例:
<html>
<head>
<SCRIPT language="javascript">
var student=new Array();
student[0]=new Array("1","2","3");
student[1]=new Array("4","5","6");
student[2]=new Array("7","8","9");
for(i=0;i<student.length;i++){
for(j=0;j<student.[0].length;j++){
document.write(" "+student[i][j]);
}
document.write("<p>");
}
</SCRIPT>
</head>
</html>
JavaScript Array(数组) 对象
Array(数组) 对象的方法
方法 描述
concat() 连接两个或更多的数组,并返回结果。
join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
pop() 删除并返回数组的最后一个元素
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
reverse() 将数组中的排列顺序做反向排列。
shift() 删除并返回数组的第一个元素
slice() 从现有数组中的某个元素开始依次返回
sort() 对数组的元素进行排序
splice() 方法用于插入、删除或替换数组的元素。
toSource() 显示对象的源代码,这个方法在IE中无效。
toString() 将数组转换为字符串(以逗号分隔每一项),并返回结果。
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
valueOf() 返回数组对象的原始值
splice方法的用法:
arrayObject.splice(index,howmany,element1,.....,elementX)
index
必需。规定从何处添加/删除元素。
该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
howmany
必需。规定应该删除多少元素。必须是数字,但可以是 "0",如果不需要删除的则指定为0.
如果未指定此参数,则删除从 index 开始到原数组结尾的所有元素。
element1,可选。规定要添加到数组的新元素。从 index 所指的下标处开始插入。
elementX ,可选。可向数组添加若干元素。
在数组指定位置插入元素
<script type="text/javascript">
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
document.write(arr + "<br />")
arr.splice(2,0,"William");//在数组下标为2的地方插入一个元素
document.write(arr + "<br />")
</script>
输入结果:
George,John,Thomas,James,Adrew,Martin
George,John,William,Thomas,James,Adrew,Martin
<script type="text/javascript">
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
document.write(arr + "<br />")
arr.splice(2,1,"William");//将删除位于 index 2 的元素,并添加一个新元素来替代被删除的元素
document.write(arr)
</script>
输入结果:
George,John,Thomas,James,Adrew,Martin
George,John,William,James,Adrew,Martin
在本例中我们将删除从 index 2 ("Thomas") 开始的三个元素,并添加一个新元素 ("William") 来替代被删除的元素:
<script type="text/javascript">
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
document.write(arr + "<br />")
arr.splice(2,3,"William")
document.write(arr)
</script>
输出结果:
George,John,Thomas,James,Adrew,Martin
George,John,William,Martin
复制数组中的内容(因为数组时按引用传递的,有时候我们需要clone数组的内容而不影响原数组。)
第一种:
Array.prototype.clone=function(){ var a=[]; for(var i=0,l=this.length;i<l;i++) a.push(this[i]); return a; }
第二种:
Array.prototype.clone=function(){ return this.slice(0); }
第三种:
Array.prototype.clone=function(){ return this.concat(); }
删除数组中指定的元素
根据下标删除数组元素
test = newArray();
//define removeByIndex method as part of the array
Array.prototype.removeByIndex = function(index) {
this.splice(index, 1);
}
test[0] = 'Apple';
test[1] = 'Ball';
test[2] = 'Cat';
test[3] = 'Dog';
alert("Array before removing elements: "+test);
test.removeByIndex(2);
alert("Array after removing elements: "+test);
根据值删除数组元素
test = newArray();
Array.prototype.removeByValue = function(val) {
for(var i=0; i<this.length; i++) {
if(this[i] == val) {
this.splice(i, 1);
break;
}
}
}
test[0] = 'Apple';
test[1] = 'Ball';
test[2] = 'Cat';
test[3] = 'Dog';
alert("Array before removing elements: "+test);
test.removeByValue('Cat');
alert("Array after removing elements: "+test);
删除数据中重复的元素
Array.prototype.delRepeat=function(){
var newArray=new Array();
var len=this.length;
for (var i=0;i<len ;i++){
for(var j=i+1;j<len;j++){
if(this[i].id===this[j].id){
j=++i;
}
}
newArray.push(this[i]);
}
return newArray;
}
//删除数组中重复元素
function unique(data){
data = data || [];
var a = {};
len = data.length;
for (var i=0; i<len;i++){
var v = data[i];
if (typeof(a[v]) == 'undefined'){
a[v] = 1;
}
};
data.length=0;
for (var i in a){
data[data.length] = i;
}
return data;
}
数组的属性
length,Array数组对象的长度
如果取超出数组长度外的元素的值为null或undefined。
***********************
javascript中也可以通过如下方式来创建数组,通过push方法给数组中放入元素。
var a=[];
a.push(1,2,3);
alert(a.length);
alert(a[0]);
**********
保修小数点后多少位,并四舍五入。
5.05---->toFixed(1) 5.1
5.056--->toFixed(2) 5.06
Number.prototype.toFixed=function(len)
{
var add = 0;
var s,temp;
var s1 = this + "";
var start = s1.indexOf(".");
//截取小数点后,0之后的数字,判断是否大于5,如果大于5这入为1
if(start>=0 && s1.substr(start+len+1,1)>=5)add=1;
var temp = Math.pow(10,len);
s = Math.floor(this * temp) + add;
return s/temp;
}
Number.prototype.toFixedStr=function(len)
{
var add = 0;
var s,temp;
var s1 = this + "";
var start = s1.indexOf(".");
//截取小数点后,0之后的数字,判断是否大于5,如果大于5这入为1
if(start>=0 && s1.substr(start+len+1,1)>=5)add=1;
var temp = Math.pow(10,len);
s = Math.floor(this * temp) + add;
var res=s/temp+'';
if(res.indexOf(".")==-1 && len>0){
res=res+".';
for(var n=0;n<len;n++){
res=res+'0';
}
}
return res;
}
********************************
除了parseInt,parseFloat进行字符串到数值的转换外还有以下两种方式:
强制类型转换
ECMAScript中可用的3种强制类型转换如下:
Boolean(value)――把给定的值转换成Boolean型;
Number(value)――把给定的值转换成数字(可以是整数或浮点数);
String(value)――把给定的值转换成字符串。
当要转换的值是至少有一个字符的字符串、非0数字或对象时,Boolean()函数将返回true。如果该值是空字符串、数字0、undefined或null,它将返回false。
利用js变量弱类型转换
举个小例子,一看,就会明白了。
var str= '012.345 ';
var x = str-0;
x = x*1;
注意像'1.00','101.00'等字符串被转换成整数或浮点数值后为1和101,小数点后面的0被去掉了。
数,JavaScript的数的类型包括了像Java这样的语言中的若干类型。
整数,在javascript中,可以以3中不同的基数表示整数,基数10、基数8、基数16。
十进制,前面没有零的整数。
八进制,以零大头的整数。如:056
十六进制,以0x或0X打头的整数。如:0x5F
浮点数可以包括小数部分。
字符串,含有单引号或双引号包围的0个或更多个字符。
boolean布尔值有两个true和false。
boolean对象的方法
toString() 将布尔值转换为字符串,并且返回结果。
valueOf() 返回 Boolean 对象的原始值
空值,在javascript中由术语null表示。
javascript属于松散类型的编程语言,当建立变量时,没有定义字面量或变量的类型,而且类型能根据上下文随时改变。Javascript已经增加了parseInt()和parseFloat()函数,这两个函数分别用来将字符串转变成整数或浮点数。
2变量
可以使用var命令声明变量。如:var example;
给变量赋值采用=号字符。变量名必须以字母或下划线_打头,其余字符可以包括数字。
3表达式
javascript有几种类型的表达式:
赋值表达式:给变量赋值
算术表达式:数的运算
字符串表达式:字符串的运算
逻辑表达式:布尔值的运算
javascript的赋值运算符:=、+=、-=、*=、/=、%=
算术运算符:+ 、-、*、/。
逻辑运算符:&&、||、!
比较运算符:==、!=、>、<、>=、<=。
条件运算符:(条件)?var1:var2
字符串运算符:+,将两个运算符合并。
4 if-else结构
if(条件){
javascript的代码;
}else if{
javascript的代码;
}else{
javascript的代码;
}
5函数及其使用
函数的定义,函数由function语句定义,function语句需要一个函数名、将传递到函数的一些列参数或变元以及命令块。
function 函数名(参数,变元){
命令块;
}
例如:
function printName(name){
document.write("<B><I>");
document.writeln(name);
document.write("</B></I>");
}
当调用函数时,变量和字面量均可作为变元传递。
如果变量传递到函数,改变函数内的参数的值不会改变传递到函数的变量值。
参数仅仅在函数生命期内有效。
函数内声明的变量称为局部变量,函数外生命的变量在整个脚本内均有效的变量成为全局变量。
函数的返回结果,函数的返回结果是由return语句返回的。return语句能够用来返回可计算出单一值的任何有效表达式。
*********eval()函数可以将字符串转换成数字,eval("10*10")将返回100。********
递归函数
递归指函数调用其自己的情形,这中类型的函数称为递归函数。
function factorial(number){
if(number>1){
return number*factorial(number-1);
}else{
return number;
}
}
6对象
javascript可以利用函数建立定制的对象。需要定义对象的属性以及给对象加入方法:
function student(name,age,grade){
this.name=name;
this.age=age;
this.grade=grade;
//这是对象的属性。this在javascript中起着特殊的作用,用于表示当前的对象。
function display(){
document.writeln("Name:"+this.name);
document.writeln("Age:"+this.age);
document.writeln("grade:"+this.grade");
//这是对象的方法。
}
}
student1=new student("Bob",10,6);
对象可以通过.点运算符来调用其中的属性和方法。student1.display();
关联数组
JavaScript中,数组时由单个变量表示的值的有序集合。javascript的数组并不是只有唯一的数据类型,数组中的每个成员可以取不同类型的值。
Math.ceil(),返回大于变元值的最为接近的整数。
Math.floor(),返回小于变元值的最为接近的整数。
7创建数组
一个专用的关键词new调用JavaScript函数为数组在内存中分配空间。一个Array()函数的可选参数可以在数组创建时指定数组要使用的元素个数,JavaScript不要求去给定数组元素的个数,用户可以随时改变数组的大小。例:
var USStates=new Array(51);
数组的长度是数组中所包含单元的个数。可以使用数组的length属性来获得数组的长度。如USStates.length
注意,改变数组的length的值时,如果变得比本来的个数小将会截取掉数组中的元素。如xxx.length=0将会把数组xxx的内容清空。
数组中的document对象
当载入文档时,浏览器将为文档中相同的对象创建一个数组。如用户的页面包括两个<form>标记对,在文档中就会出现两个表弟呢,浏览器为文档创建表单对象的数组,这些表单的引用如下:
document.forms[0]
document.forms[1]
document对象的索引值是根据对象的自如顺序分配。但最好使用名称引用。
<html>
<head>
<title>数组</title>
<script language="javascript">
<!--
function test(){
var t=new Array(3);
t[0]="I";
t[1]="love";
t[2]="you";
for(var i=0;i<3;i++){
document.write(t[i]+" ");
}
}
//-->
</script>
</head>
<body onLoad="test();">
</body>
</html>
二维数组
当JavaScript的数组中的所有单元值都只有基本类型时称这种数组为一维数组。当数组中的单元值是又一种数组时,就形成了二维数组。
anotherArray=new Array('one','two','three');
myArray=new Array(1,2,anotherArray);
例:
<html>
<head>
<SCRIPT language="javascript">
var student=new Array();
student[0]=new Array("1","2","3");
student[1]=new Array("4","5","6");
student[2]=new Array("7","8","9");
for(i=0;i<student.length;i++){
for(j=0;j<student.[0].length;j++){
document.write(" "+student[i][j]);
}
document.write("<p>");
}
</SCRIPT>
</head>
</html>
JavaScript Array(数组) 对象
Array(数组) 对象的方法
方法 描述
concat() 连接两个或更多的数组,并返回结果。
join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
pop() 删除并返回数组的最后一个元素
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
reverse() 将数组中的排列顺序做反向排列。
shift() 删除并返回数组的第一个元素
slice() 从现有数组中的某个元素开始依次返回
sort() 对数组的元素进行排序
splice() 方法用于插入、删除或替换数组的元素。
toSource() 显示对象的源代码,这个方法在IE中无效。
toString() 将数组转换为字符串(以逗号分隔每一项),并返回结果。
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
valueOf() 返回数组对象的原始值
splice方法的用法:
arrayObject.splice(index,howmany,element1,.....,elementX)
index
必需。规定从何处添加/删除元素。
该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
howmany
必需。规定应该删除多少元素。必须是数字,但可以是 "0",如果不需要删除的则指定为0.
如果未指定此参数,则删除从 index 开始到原数组结尾的所有元素。
element1,可选。规定要添加到数组的新元素。从 index 所指的下标处开始插入。
elementX ,可选。可向数组添加若干元素。
在数组指定位置插入元素
<script type="text/javascript">
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
document.write(arr + "<br />")
arr.splice(2,0,"William");//在数组下标为2的地方插入一个元素
document.write(arr + "<br />")
</script>
输入结果:
George,John,Thomas,James,Adrew,Martin
George,John,William,Thomas,James,Adrew,Martin
<script type="text/javascript">
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
document.write(arr + "<br />")
arr.splice(2,1,"William");//将删除位于 index 2 的元素,并添加一个新元素来替代被删除的元素
document.write(arr)
</script>
输入结果:
George,John,Thomas,James,Adrew,Martin
George,John,William,James,Adrew,Martin
在本例中我们将删除从 index 2 ("Thomas") 开始的三个元素,并添加一个新元素 ("William") 来替代被删除的元素:
<script type="text/javascript">
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
document.write(arr + "<br />")
arr.splice(2,3,"William")
document.write(arr)
</script>
输出结果:
George,John,Thomas,James,Adrew,Martin
George,John,William,Martin
复制数组中的内容(因为数组时按引用传递的,有时候我们需要clone数组的内容而不影响原数组。)
第一种:
Array.prototype.clone=function(){ var a=[]; for(var i=0,l=this.length;i<l;i++) a.push(this[i]); return a; }
第二种:
Array.prototype.clone=function(){ return this.slice(0); }
第三种:
Array.prototype.clone=function(){ return this.concat(); }
删除数组中指定的元素
根据下标删除数组元素
test = newArray();
//define removeByIndex method as part of the array
Array.prototype.removeByIndex = function(index) {
this.splice(index, 1);
}
test[0] = 'Apple';
test[1] = 'Ball';
test[2] = 'Cat';
test[3] = 'Dog';
alert("Array before removing elements: "+test);
test.removeByIndex(2);
alert("Array after removing elements: "+test);
根据值删除数组元素
test = newArray();
Array.prototype.removeByValue = function(val) {
for(var i=0; i<this.length; i++) {
if(this[i] == val) {
this.splice(i, 1);
break;
}
}
}
test[0] = 'Apple';
test[1] = 'Ball';
test[2] = 'Cat';
test[3] = 'Dog';
alert("Array before removing elements: "+test);
test.removeByValue('Cat');
alert("Array after removing elements: "+test);
删除数据中重复的元素
Array.prototype.delRepeat=function(){
var newArray=new Array();
var len=this.length;
for (var i=0;i<len ;i++){
for(var j=i+1;j<len;j++){
if(this[i].id===this[j].id){
j=++i;
}
}
newArray.push(this[i]);
}
return newArray;
}
//删除数组中重复元素
function unique(data){
data = data || [];
var a = {};
len = data.length;
for (var i=0; i<len;i++){
var v = data[i];
if (typeof(a[v]) == 'undefined'){
a[v] = 1;
}
};
data.length=0;
for (var i in a){
data[data.length] = i;
}
return data;
}
数组的属性
length,Array数组对象的长度
如果取超出数组长度外的元素的值为null或undefined。
***********************
javascript中也可以通过如下方式来创建数组,通过push方法给数组中放入元素。
var a=[];
a.push(1,2,3);
alert(a.length);
alert(a[0]);
**********
保修小数点后多少位,并四舍五入。
5.05---->toFixed(1) 5.1
5.056--->toFixed(2) 5.06
Number.prototype.toFixed=function(len)
{
var add = 0;
var s,temp;
var s1 = this + "";
var start = s1.indexOf(".");
//截取小数点后,0之后的数字,判断是否大于5,如果大于5这入为1
if(start>=0 && s1.substr(start+len+1,1)>=5)add=1;
var temp = Math.pow(10,len);
s = Math.floor(this * temp) + add;
return s/temp;
}
Number.prototype.toFixedStr=function(len)
{
var add = 0;
var s,temp;
var s1 = this + "";
var start = s1.indexOf(".");
//截取小数点后,0之后的数字,判断是否大于5,如果大于5这入为1
if(start>=0 && s1.substr(start+len+1,1)>=5)add=1;
var temp = Math.pow(10,len);
s = Math.floor(this * temp) + add;
var res=s/temp+'';
if(res.indexOf(".")==-1 && len>0){
res=res+".';
for(var n=0;n<len;n++){
res=res+'0';
}
}
return res;
}
********************************
除了parseInt,parseFloat进行字符串到数值的转换外还有以下两种方式:
强制类型转换
ECMAScript中可用的3种强制类型转换如下:
Boolean(value)――把给定的值转换成Boolean型;
Number(value)――把给定的值转换成数字(可以是整数或浮点数);
String(value)――把给定的值转换成字符串。
当要转换的值是至少有一个字符的字符串、非0数字或对象时,Boolean()函数将返回true。如果该值是空字符串、数字0、undefined或null,它将返回false。
利用js变量弱类型转换
举个小例子,一看,就会明白了。
var str= '012.345 ';
var x = str-0;
x = x*1;
注意像'1.00','101.00'等字符串被转换成整数或浮点数值后为1和101,小数点后面的0被去掉了。