声明一个匿名函数,然后立即执行它。这种做法就是立即执行函数

    实现立即执行函数的方法有

    1. (function(){alert('我是匿名函数')}())
    2. (function(){alert('我是匿名函数')})()
    3. !function(){alert('我是匿名函数')}()
    4. +function(){alert('我是匿名函数')}()
    5. -function(){alert('我是匿名函数')}()
    6. ~function(){alert('我是匿名函数')}()
    7. void function(){alert('我是匿名函数')}()
    8. new function(){alert('我是匿名函数')}()
    9. var x = function(){return '我是匿名函数'}()

    匿名函数的作用:
    在 ES6 之前,只能通过它来「创建局部作用域」。
    一个例子:为了不打印出5个6,需创造局部变量,用立即执行函数

    1. for (var i = 1; i < 6; i++){
    2. !function(j){
    3. setTimeout(()=>console.log(j), 0)
    4. }(i)
    5. }

    而现在我们可以使用 ES6 的 block + let 语法,来创建局部作用域

    1. for (let i = 1; i < 6; i++){
    2. setTimeout(()=>console.log(i), 0)
    3. }