函数
函数也是一个对象,
函数中可以封装一些功能(代码) ,在需要时可以执行这些功能(代码)
函数中可以保存一些代码在需要的时候调用
使用typeof检查一个函数对象时,会返回function
创建一个函数对象//可以将要封装的代码以字符串的形式传递给构造函数
var fun = new Function("console.log('Hello 这是我的第一个函数');");
//封装到函数中的代码不会立即执行
//函数中的代码会在函数调用的时候执行
//调用函数 语法: 函数对象()
//当调用函数时,函数中封装的代码会按照顺序执行
//fun();
var fun = new Function("console.log('Hello 这是我的第一个函数');");
fun.hello=”你好”;
console.log(fun.hello); //”你好”
function fun2(){
}
console.log(fun2);
输出结果
function fun2(){
}
创建函数的方法
1.使用 函数表达式 来创建一个函数
var 函数名 = function([形参1,形参2...形参N]){语句......}
var fun = new Function("console.log('Hello 这是我的第一个函数');");
2.使用 函数声明来创建一个函数语法:
function 函数名([形参1,形参2...形参N]){
语句....
}
function fun2(){console.log("这是我的第二个函数~~~"):}
这是一个匿名函数
function(){
console.log("我是匿名函数中封装的代码”);
}
函数的参数
可以在函数的()中指定一个或多个形参(形式参数)
多个形参质检使用,隔开,声明形参就相当于在函数内部声明了对应的变量
但是并不赋值
function sum(a,b){
console.log(a+b);
}
/*在调用函数时,可以在()中指定实参(实际参数)
实参将会赋值给函数中对应的形参*/
sum(1,2);
调用函数时解析器不会检查实参的类型.所以要注意是否有可能会接收到非法的参数。,如果有可能则需要对参数进行类型的检查
多余实参不会被赋值 如果实参的数量少于形参的数量,则没有对应实参的形参将是undefined
函数的返回值
//使用函数声明来创建函数
function sum(a,b,c){
var d=a+b+c;
return d;
}
var result=sum(4,7,8);
console.log(“result=”+result);
可以用return来设置函数的返回值 语法:return 值
return后的值将会会作为函数的执行结果返回,
可以定义一个变量,来接收该结果。在函数中return后的语句都不会执行
函数被调用后才会执行
如果return语句后不跟任何值就相当于返回一个undefined,
如果函数中不写return,则也会返回undefined
return后可以跟任意类型的值
变量result的值就是函数的执行结果
函数返回什么result的值就是什么
实参可以是任何值,可以是基本数据类型,可以是对象,也可以是函数
方法一(实参参数的顺序不可以打乱,形参是基本数据类型):
/*创建一个函数,可以在控制台中输出一个人的信息
可以输出人的name age gender address*/
function sayHello(name,age,gender,address){
console.log(“我是”+name+”,今年我”+age+”岁了,”+”我是一个”+gender+”,我住在”+address);
}
sayHello(“孙悟空”,18,”男”,”花果山”);
方法二(实参的顺序可以打乱,形参是对象):
function sayHello(o){
console.log(“我是”+name+”,今年我”+age+”岁了,”+”我是一个”+gender+”,我住在”+address);
}
//创建一个对象
var obj={
name:”孙悟空”;
age:18;
gender:”男”;
address:”花果山”;
};
sayHello(obj);
打印结果:我是孙悟空,今年我18岁了,我是一个男人,我住在花果山。
function fun(a){
a(obj);
}
fun(sayHello); //本质sayHello(obj);
打印结果:我是孙悟空,今年我18岁了,我是一个男人,我住在花果山。
实参也可以是一个函数
function fun(a){
console.log(“a=”+a);
}
fun(function(){alert(“hello”)});
//打印结果
“a=function(){alert(“hello”)}”
mianji() 调用函数 相当于使用的函数的返回值
mianji 函数对象 相当于直接使用函数对象
返回值可以是任何的数据类型也可以是一个对象。
function fun2(){
var obj = (name:"沙和尚"};
return obj;
var a = fun2();
console.log("a ="+a);
//打印输出 a=[object Object]
function fun3(){
//在函数内部再声明一个函数
function fun4(){
alert("我是fun4");
}
fun4();
}
fun3();
结果:弹出窗口 我是fun4
立即执行函数:直接调用匿名函数
立即执行函数是函数被定义完成,立即被调用。
(function(){
alert(“我是一个匿名函数~~~”);
})();