1. var a = 10;
    2. (function () {
    3. console.log(a)
    4. a = 5
    5. console.log(window.a)
    6. var a = 20;
    7. console.log(a)
    8. })()

    在IIFE中,定义了一个新的a,由于变量提升的原因, var a 会首先执行,于是第一个 console.log(a) 会输出 undefined ,然后输出 window.a10 ,最后 a = 20 输出 20