函数

在js中函数也是对象,因此可以把它赋给一个变量,一个数组元素,甚至作为参数传给另一个函数调用

函数的定义

  1. 声明式的静态方式(所有浏览器都支持)

function 函数名(形参列表){函数体}//注意没有var否则报错,且function必须小写

①这种方式最常用,他只需定义一次,在程序的完整过程中,他一直被存在内存中,只在页面打开时解析一次,不论是什么调用它,返回的都是函数体处理完的结果

②要设定返回值,他可以有0个到多个return,一般多个return 都用在需要判断条件时,即满足这个条件就不往下执行函数体内容

③参数方面注意传参形式,一种是传值,一种是传地址,简单点说就是传值不改变实参,传地址改变实参

1
2
3
4
5
6
7
8
9
10
function change(str1,arr) {
str1 = "hello javascript!";
arr[arr.length] = "three";
}
var str = "hello world!";
var arr1 = ["one","two"];
change(str,arr1);
document.write(arr1);//传地址,改变
document.write("<br />");
document.write(str);//传值,不变

结果:

1
2
one,two,three
hello world!

  1. 匿名函数(没有函数名,又叫动态函数,较新的浏览器支持)
    var hd = new Function("参数1","参数2","函数结构体")//F必须大写,必须是new

匿名函数是用一次定义一次,直接赋给变量

这种方式不常用,但是在只有运行时才能确定函数成立条件时,创建动态函数就很有必要

1
2
3
4
5
6
7
8
9
var func = prompt("请输入函数体");
var x = parseInt(prompt("请输入x"));
var y = parseInt(prompt("请输入y"));//注意promt返回的是字符串若不转换结果就是23
var op = new Function("x","y",func);
var result = op(x,y);
document.write("function is "+func+"<br />");
document.write("x is"+x+"<br />");
document.write("y is"+y+"<br />");
document.write("result is"+result);

结果:

1
2
3
4
function is return x+y
x is2
y is3
result is5

  1. 函数直接量(即赋给变量或作为另一函数的参数,新的浏览器支持7)
    var func = (参数列表){函数体}//兼具了匿名函数和声明函数

var func = 函数名(参数列表){函数体}


1
2
3
4
function fan(x,y,z){
document.write((z(x,y)));
}
fan(1,2,function(x,y){return x+y});//函数作为参数

结果:3

回调函数

回调函数可以理解成,将回调函数作为参数放在一个新函数里,然后执行过程就是先执行新函数再反过来执行回调函数

1
2
3
4
5
6
7
8
9
//定义回调函数
function fun1(value){
document.write(value);
}
//定义新函数并把回调函数作为参数
function fun2(fun,value){
fun(value);
}
fun2(fun1,"hi js!")

结果:hi js!
avatar

函数对象

1
2
3
4
5
6
7
8
9
function func(){
//arguments.length返回参数个数
for(var i=0;i<arguments.length;i++){
document.write(arguments[i]);
//arguments[i]输出对应参数,arguments和length是作为对象的函数的属性

}
}
func(1,2,3);

结果:123

-------------本文结束感谢您的阅读-------------