函数定义

函数定义分为三种
1、构造函数

var fun=newFunciton()

2、普通定义

function fun(){}

3、函数式定义

varfun=function(){};

这三种方式都可以定义函数fun。

匿名函数定义

匿名函数顾名思义指的是没有名字的函数,匿名函数——没有实际名字的函数。

匿名函数的应用场景:

1.事件

<input type="button" value="btn" id="sub">

<script>

    //获得按钮元素
    var sub = document.querySelector("#sub");

    //给按钮增加点击事件。
    sub.onclick=function(){

        alert("当点击按钮时会执行");

    }

</script>

2.对象

var obj = {
    name:"lynn",
    age:18,
    fn:function(){
        return "我叫"+this.name+"今年"+this.age+"岁了!";
    }
};

console.log(obj.fn());//我叫lynn今年18岁了!

3.函数表达式

//将匿名函数赋值给变量fn。

var fn = function(){

    return "2020"

}

//调用方式与调用普通函数一样

console.log(fn());// 2020

4.回调函数

setInterval(function(){

    console.log("回调函数,每次1秒钟会被执行一次");

},1000);

5.返回值

//将匿名函数作为返回值
function fn(){

    //返回匿名函数
    return function(){
       return lynn";
    }
}

//调用匿名函数
console.log(fn()());//lynn

//或
var box=fn();

console.log(box());//lynn

6.模仿块级作用域

  块级作用域,有的地方称为私有作用域。JavaScript中是没有块级作用域的,例如:

if( 1 == 1 ){ //条件成立,执行if代码块语句。

    var a = 12; //a为全局变量
}

console.log(a);//12

for( var i= 0; i < 3; i++){
    console.log(i);
}

console.log(i);//4

匿名函数的作用:

1、通过匿名函数可以实现闭包。闭包是可以访问在函数作用域内定义的变量的函数。若要创建一个闭包,往往都需要用到匿名函数。

2、模拟块级作用域,减少全局变量。执行完匿名函数,存储在内存中相对应的变量会被销毁,从而节省内存。再者,在大型多人开发的项目中,使用块级作用域,会大大降低命名冲突的问题。