JS函数的简介
函数Function
函数也是一个对象,与普通对象不同的是:普通对象仅是一个容器,而函数可以封装一些功能(代码),在需要使用的时候调用函数。
在实际开发过程中,很少使用构造函数来创建一个函数对象
创建函数时,可以将要封装的代码以字符串的形式传递给构造函数;
封装到函数中的代码不会立即执行,等到调用时才会执行
//创建一个函数对象
var fun=new Function("console.log('hello');");
fun();
使用函数声明来创建一个函数
语法(使用中括号代表形参值可选):Function 函数名([形参1,形参2,形参3…]){
语句…
}
//创建函数
function fun(){
console.log("hello");
}
//调用函数
fun();
使用函数表达式来创建一个函数,又称匿名函数
语法:var 函数名=function([形参1…]){
语法…
}
//创建函数,将一个匿名函数赋值给一个变量
var fun1=function(){
console.log("hello");
}
//调用
fun1();
函数的参数
可以在函数的()中定义一个或多个形参(形式参数);
多个形参之间使用逗号隔开,生命形参就相当于在函数内部生命力对应的变量,但是并不赋值;
在调用函数时,可以在()中指定实参(实际参数);
实参会将赋值给函数中对应的形参
function fun(a,b){
console.log(a+b);
}
fun(1,2); //3
实参可以是任意的数据类型,即可以是一个对象、函数;
当实参过多时,可以将参数封装到对象中去,然后通过对象传递;
function information(o){ //o=[object object]
console.log("我是"+o.name+",今年我"+o.age+"岁了,是"+o.gender+"生");
}
var informa={
name:"张三",
age:18,
gender:"男"
}
information(informa);
function information(o){
console.log("我是"+o.name+",今年我"+o.age+"岁了,是"+o.gender+"生");
}
var informa={
name:"张三",
age:18,
gender:"男"
}
function fun(a){
console.log("a="+a);
a(informa); //把informa对象传递给a,作为实参
}
fun(information); //把information函数传递给fun函数
//将一个匿名函数传递给另一个函数
fun(function(){alert("hello")}); //a=function(){alert("hello")}
调用函数时,解析器不会检查实参的类型
function fun(a,b){
console.log(a+b);
}
fun(123,hello); //123hello
fun(true,false); //1
调用函数时,解析器不会检查实参的数量,多余的实参不会被复制,如果实参的数量少于形参的数量,没有实参的形参将是undefined
function fun(a,b){
console.log(a+b);
}
fun(1,2,3); //3
fun(1); //NaN
函数的返回值
可以使用return来设置返回值;
语法:return 值
return后面的值将会作为函数的执行结果返回,可以定义一个变量接受结果;
return后的语句不再执行
function sum(a,b){
var d=a+b;
return d;
}
var result=sum(1,2);
console.log(result); //3
return、break、continue的区别
continue可以结束整个函数;
break可以退出当前循环;
continue可以跳出当前循环
返回值可以是任意的数据类型,即可以是对象、函数
function fun2(){
return={name:"zs"};
}
var a=fun2();
console.log("a="+a); //a=[object Object]
function fun3(){
//函数可以嵌套
function fun4(){
alert("fun4");
}
//将fun4函数作为返回值返回
return fun4;
}
a=fun3();
console.log(a);