为什么这段代码foo输出的结果是11?

图片说明
按照预编译的话输出不应该是function foo() {}吗?
不太明白

函数内不使用var 默认是全局变量,相当于window.foo = 10;

        function func (){
            foo = 20;
            // var foo = 10;  不写这行输出的是 window.foo  写上会把foo覆盖
            return foo;
        }
        func ();
        console.log(func())
        console.log(window.foo)