JavaScript函数声明与调用
1、函数的声明
1.普通函数的声明
function 函数名([参数1,参数2,…]){
语句
[return 表达式]
}
2.匿名函数的声明
var 变量名=function(参数1,参数2,……){
函数体
};
3.构造函数的声明
var 变量名=new Function("参数1","参数2",……"函数体");
4.递归函数的声明
function 函数名(参数1){
函数名(参数2);
}
2、函数的调用
1、简单函数调用
2、事件响应中调用函数
3、链接调用函数
3、函数的类型
1 普通函数
1.普通函数
(1)语法格式。
function ShowName(name){
alert(name);
}
(2)JavaScript中同名函数的覆盖。
var nl = 1;
function add(valuel){
return n1+1;
}
alert(add(n1));//调用的是下面的函数,输出:3
function add(valuel,value2){
return value1 + 2;
}
alert(add(n1));//输出:3
(3)arguments对象。
function showNames(name){
alert(name);//张三
for(var i=0;i<arguments.length;i++){
alert(arguments[i]);//张三、李四、王五
}
showNames('张三','李四','王五');
(4)函数的默认返回值。
function showMsg(){
}
alert(showMsg());//输出:undefined
2 匿名函数
1、变量匿名函数
var anonymousNormal=function(p1,p2){
alert(p1+p2);
}
anonymousNormal(3,6);//输出9
2、无名称匿名函数
(function(p1){
alert(p1);
})(1);
3 闭包函数(难)
4 内置函数
<script language="javascript">
function SortNumber(obj,func){
if( !(obj instanceof Array) ||!(func instanceof Function)){
var e=new Error();
e.number=100000;
e.message="参数无效";
throw e;
for(n in obj){
for(m in obj){
if(func(obj[n],obj[m])){
var tmp = obj[n];
obj[n]=obj[m];
obj[m]=tmp;
}
}
}
return obj;
}
function greatThan(argl,arg2){
return argl > arg2;
}
try{
var numAry = new Array(5,8,6,32,1,45,7,25);
document.write("<li>排序前:"+numAry);
SortNumber(numAry,greatThan)
document.write("<li>排序后:"+numAry);
}catch(e){
alert(e.number+":"+e.message);
}
</script>
<script language=javascrpit>
/*
parselnt()函数
*/
var num1= " 123abe "
var num2="abe123"
document.write("(1)使用parselnt()函数:<br>");
document.write("123abe转化结果为:"+pamelnt(numl)+"<br>");
document.write("abe123转化结果为:"+parselnt(num2)+"<br><br>");
/*
parseFloat()函数
*/
var num3="123.456789abe"
document.write("(2)使用parseFloat()函数:<br>");
document.write("123.456789abc转化结果为:"+panseFloat(num3)+"<br><br>");
/*
isNaN()函数
*/
document.write("(3)使用isNaN()函数:<br>");
document.write("123.456789abc转化后是否为NaN:"+isNaN(parseFloat(num3))+"<br>");document.write("abc123转化结果后是否为NaN:"+isNaN(parselnt(num2))+"<br><br>");
/*
isFinite()函数
*/
document.write("(4)使用isFinite()函数<br>");
document.write("1除以0的结果是否为无穷大:"+isFinite(1/0)+"<br><br>");
/*
encodeURI()函数
*/
document.write("(5)使用encodeURI()函数<br>");
document.write("转化为网络资源地址为:"+encodeURI("http://127.0.0.1/save.html?name=测试")+"<br><br>");
/*
decodeURI()函数
*/
document.write("(6)使用decodeURI()函数<br>");
document.write("转化网络资源地址的字符串为:"+decodeURI(encodeURI("http://127.0.0.1/save.html?name=测试”))+"<br><br>");
</script
4、函数属性
1、length。 期望接受的参数的个数
2、prototype。 一个属性指向一个对象的引用
5、函数方法
1、apply() call()
2、bind()
3、toString() toLocaleString() valueOf ()
<script language=javascript>
function sum(num1,num2){
return num1 + num2;
}
function callSum(num1,num2){
retum sum.call(this,num1,num2);//明确传入每一个参数
}
function callSuml(num1,num2){
return sum.apply(this,arguments);//传入arguments对象
}
function callSum2(num1,num2){
return sum.apply(this,[num1,num2]);//传入数组
}
alert("callSum(10,10)="+callSum(10,10)+
"callSum1(10,10)="+callSum1(10,10)+"callSum2(10,10)="+callSum2(10,10));
</script>
6、JS事件处理器
1、函数响应事件
2、代码响应事件
3、调用事件