函数的定义
函数嵌套:函数中嵌套函数
作用:可以实现将一个大的功能进行分解成一个一个的小功能(函数),再通过“函数嵌套”将各个小功能(函数)结合在一起,形成一个大的功能。
isNaN()函数
isNaN()是一个全局函数,用于判断其中的字符能否转成数值,如果为true,返回NaN,如果为false,可转成纯数字
匿名函数
匿名函数,函数没有函数名,但有函数的定义。一般情况下,可以将一个函数的定义赋给一个变量。
将一个函数定义赋给一个变量,那么,这个变量就是具有了函数的特性,也就是这个变量就是一个函数。
(1)将一个匿名函数定义赋给一个变量
var a = function(a){ returna*a*a; }
document.write( a(10)) ; //调用函数
(2)将一个匿名函数的定义赋给一个数组元素
var arr = new Array();
arr[0] = 100;
arr[1] = 200;
arr[2] = function(a){return a*a*a; } //将函数的定义赋给数组元素,那么该元素就是一个函数了
//调用函数
var result = arr[2];
result(10);
全局变量和局部变量
全局变量:在函数外定义的变量,就叫“全局变量”,可以在网页的任何地方(包括函数内)都可以使用。
局部变量:只能在函数内来使用的变量,就叫“局部变量”。
注意:任何地方省略var关键字,定义的变量都是“全局变量”,因此,一般情况下,不要省略var关键字。
基本数据类型和复合数据类型的区别
基本数据类型:基本数据类型是将变量名和变量值存储在“快速内存”“栈内存”中。如果将一个基本的数据类型的变量的值赋给另一个变量的话,相当于将一个变量的值“复制”一份赋给另一个变量。这两个变量间没有任何联系,是相互独立的,也就是:修改一个变量的值,另一个变量的值不会发生改变。
变量传数值,就是“复制”一个值给另一个变量。
复合数据类型:复合数据类型的数据存储分两个部分,一是变量名和数据的地址,存在“快速内存”中;二是将实际的数据存在“慢速内存”“堆内存”中。将一个引用的变量赋给另一个变量,它赋的是数据地址,而不是真正的数据。
函数作为数据传递给其它变量
其它变量,可以是一个基本数据类型的变量,也可以是一个数组元素,还可以是对象的属性。
对象的概念
一、对象的概念
现在世界中,有很多对象,比如:人是对象、电脑是对象、桌子是对象等。
计算机是解决现实问题的一个工具,把现实中的对象挪到了计算机中。
简单的说,对象由属性和方法构成。
二、对象的分类
自定义对象(对象的简单应用)
在使用对象,对象必须先“存在”,才能对相应“对象”进行操作。
在操作“对象”之前,应该先创建一个“对象”。
(1)使用new关键字和Object()构造函数来创建
var obj = new Object(); //创建一个空对象
obj.name = “周更生”; //增加一个属性
obj.school= “北京理工大学”; //增加一个属性
//方法就是函数,方法在定义时不需要加括号,给方法赋的值,一定是一个函数。
obj.showInfo= function(){
varstr = obj.name+“毕业于”+obj.school;
document.write(str );
}
//对象的使用
obj.name = “张立峰” //修改内容
obj.edu = “大专”; //增加一个属性
delete obj.school; //删除一个对象的属性
document.write( obj.name ); //输出一个对象的属性值
obj.showInfo( ); //对象方法的调用,加上小括号
(2)使用{ }来创建一个对象
var obj = {
name:“周更生”,
school:“北京理工大学”,
showInfo:getInfo //将一个普通函数传给对象属性,这里千万不要带( )。如果带(),表示将函数的执行结果赋给对象属性,这个执行结果是“基本数据类型”。
}
//定义一个普通函数
function getInfo()
{
var str = obj.name+“的毕业于”+obj.school
document.write( str );
}
//调用对象的方法
obj.showInfo(); //对象方法
getInfo(); //调用普通函数
//(2)将一个普通函数作为数据传给一个变量
var a = getInfo; //直接将函数名赋给一个变量,是将函数的地址传递给了另一个变量
a( ); //调用函数
//(3)将一个普通函数作为数据传给一个数组元素
var arr = new Array();
arr[0] = 100;
arr[1] = getInfo; //将一个函数的地址,传给了数组元素,所以arr[1]就成了函数了
arr[1]( ); //调用函数,相当于 getInfo();
内置对象String对象——字符串对象
一、创建String字符串对象
第一种:使用new关键字和String()构造函数来创建
varstrObj = new String(“广州传智播客欢迎您!”);
var len = strObj.length; //统计字符的长度
……
第二种:一个字符串变量,本身就是一个String对象(最常用)
varstr = “广州传智播客欢迎您!”;
var len = str.length;
……
二、String对象的方法
1、charAt(index)方法
功能:返回指位位置索引号的一个字符
注意:字符串的下标同数组一样,都是从0开始的正整数
举例:
var str = “广州传智播客欢迎您!”;
document.write(str.charAt(0) ); //输出下标为0的一个字符
2、indexOf(char)方法
功能:在字符串中,从左到右,查找char子字符串,
返回值:如果找到则返回所在位置索引号index,如果没有找到,返回-1
举例:
varemail = “beijing2000@126.com”;
varindex = email.indexOf(“@”)
if( index!=-1)
{
Document.write(“邮箱合法”);
}else
{
Document.write(“邮箱不合法”);
}
3、lastIndexOf(char)方法
功能:在字符串中,从右到左,查找char子字符串
返回值:如果找到返回位置索引号,否则,返回-1。
举例:
varfilename = “20140.721.123.jpg”//扩展名的点,应该从右往左
4、substr(startIndex[,length])方法
功能:从原始字符串中,返回一个指定的子字符串。
参数:
startIndex:指子字符串的开始索引号;
length:为可选项,指从指定位置处,取出length个字符,如果省略length,一直取到结尾
举例:
varfilename = “20140.721.123.jpg”//扩展名的点,应该从右往左
varindex = filename.lastIndexOf(“.”);
varstr = filename.substr(index); //从index索引号开始,一直取到结尾
5、substring(startIndex[,endIndex])方法
功能:从原始字符串中,取出一个子字符串
参数:
startIndex:指子字符串的开始索引号;
endIndex:为可选项,指定结束位置的索引号,如果省略endIndex,功能与substr()一样。
6、split(分割符)方法
功能:将一个字符串,用指定的分割符分成一个数组。
语法:array strObj.split(分割符)
举例:
var today = new Date();
var week = today.getDay(); //取值0-6的星期值
var str_week = “星期日,星期一,星期二,星期三,星期四,星期五,星期六”;
var arr_week = str_week.split(“,”);
document.write( arr_week[week] );
7、toLowerCase()转小写、toUpperCase()转大写
Str.toLowerCase():转成全小写
Str.toUpperCase():转成全大写
8、localeCompare()方法
功能:使用本地的排序规则(根据所使用的操作系统,简体中文操作系统)对中文进行排序
str1.localeCompare(str2)
比较的结果:
str1>str2 返回1的值
str1==str2 返回0的值
str1<str2 返回-1的值
Array对象
1、length属性
功能:统计数组中元素的个数
举例:var len = arrObj.length
2、 join()方法
功能:将数组中各个元素,通过指定的连接符,连成一个字符串。
语法:string arrObj.join(连接符)
举例:var str = arrObj.join(“,”)
3、删除数组元素shift()、pop(),与delete运算符的区别
shift():删除数组中第一个元素,并将数组的长度减一;
pop():删除数组中最后一个元素,并将数组的长度减一;
var arr = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
document.write("数组当前的长度为:"+arr.length+"<hr>");
arr.shift();
document.write("数组当前的长度为:"+arr.length+"<hr>");
arr.pop();
document.write("数组当前的长度为:"+arr.length+"<hr>");
说明:delete只能删除数组元素的值,而所占空间还存在;shift()和pop()删除数组元素后,所占空间不存在。
4、增加数组元素unshift()和push()方法
unshift():在数组的开头增加一个元素,并将数组的长度加一;
push():在数组的结尾增加一个元素,并将数组的长度加一;
注意:shift()、pop()、unshift()、push()它们是直接在原数组进行操作,因此不需要再创建变量
5、反转数组元素的顺序reverse()
var arr = [1,2,3,4,5,6,7];
arr.reverse(); //反转数组中元素的顺序
document.write(arr); //[7,6,5,4,3,2,1]
6、数组中元素的排序sort()
功能:对数组中元素进行排序
语法:sort([sortby])
参数:
如果没有指定sortby参数,默认排序是按照字母的先后顺序排序的;
sortby是一个函数名,这个函数规定元素的排序规则
arr.sort(orderby); //将函数的地址传给sort方法
function orderby(a,b)
{
returna-b; //对数值大小进行排序
}
a-b的结果:
a-b >0 返回大于0的值
a-b= 0 返回等于0的值
a-b< 0 返回小于0的值
//实例:按拼音的先后顺序排列
var arr = ["安庆市","安徽省","河南省","河北省","北京市"];
arr.sort(orderby2);
function orderby2(str1,str2)
{
returnstr1.localeCompare(str2);
}
document.write(arr);