js基础-函数

1.函数基础

1.1函数是可以执行的代码
1.2函数定义:

关键字:function    

function 函数名(){程序}

1.3参数:

参与运算的变量

(1)形参:形式上参与运算的变量,无实际值,为实参占位

(2)实参:实际参与运算的值

1.4返回值:return

函数程序运行结束后的结果外部需要使用时,不能直接给与,需要通过return返回。

函数内部,return后的值就是返回值

函数执行后剩下的结果就是返回值

函数默认返回值是undefined

1.5函数名、函数体、函数加载
(1)函数名==整个函数
function fn(){
 alert(1);
 }
console.log(fn)==console.log(function fn(){
 alert(1);
 })

(2)函数加载问题

js加载时,只加载函数名,不加载函数体。如果想使用内部成员变量,需要调用函数。

1.6函数定义

(1)函数声明:

function f(a,b){
   return a+b;}
console.log(f(3,4));

(2)函数表达式

var myfun=function(a,b){
    return a+b;
}
console.log(myfun(6,7));

1.7变量和作用域

(1)全局变量

(2)局部变量

函数内部的变量,只有函数内部可以访问到

(3)隐式全局变量

function fn(){
  var a=b=c=1;
}

b和c就是全局变量

function(){
    var a=b=c=1;  //b和c就是全局变量
    var a=1;b=2;c=3;  //b和c就是全局变量
    var a=1,b=2,c=3;}  //b和c就不是全局变量

(4)变量声明提升(出现原因:预解析)

函数中:定义变量在使用变量之后

成员只提升变量名,不提升变量值,出现undefined。函数是所有内容提升。

console.log(aa); 
var aa=1;
 //结果是undefined。因为变量声明提升只提变量名,不提升变量值。上面和下面是等价的
var aa;console.log(aa);aa=1;
fn();
        function fn(){
            console.log(bb);
            var bb=2;
        }

结果是undefined;函数提升是整个提升,但是就近原则使用变量,内部变量提升,所以是undefined。

总结:

(1)函数不调用不执行

(2)函数名等于整个函数

(3)参数相当于局部变量

(4)就近原则使用变量

(5)两个平级的函数中的变量不会相互影响(可以使用相同的形参名)

2.函数高级

2.1 匿名函数

就是没有命名的函数,一般用在绑定事件中

function(){}

调用:(function(){alert("hello")});就是用()调用

2.2递归函数

递归是一种思想,类似于计数器,开闭原则

递归的实质就是函数自己调用自己

递归必须有跳出条件,否则是死循环

var i=1;
        fn();
        function fn(){
            alert("从前有座山,山里有座庙");
            i++;
            alert(i);
            if(i>3){
                return;
            }
            fn();
            alert("从前啊");
            i++;
            alert(i);
            if (i<3){
                fn();
            }
        }
2.3 回调函数

回调函数:函数作为参数进行传递和使用

fn(test);
function fn(demo){
   demo();
}
function test(){
    console.log('函数');
}

回调函数一般是用于定义一个规则来使用,规则的传递通过函数来实现。


猜你喜欢

转载自blog.csdn.net/hamutailang_/article/details/80889511