<script>
        //1.
        var foo = {
            bar: function () {
                return this.baz;
            },
            baz: 1
        };
        (function () {
            return typeof arguments[0]();
        })(foo.bar);
        //foo.bar方法没有参数,typeof arguments[0]()为undefine
        //2.
        var f = (function f() { return "1"; }, function g() { return 2; })();
        typeof f;
        //f=2 为number类型
        //3.
        var i=(function () {
            function f() { return 1; }
            return f();
            function f() { return 2; }
        })();
        //i=2
        //4.
        for (var i = 0; i < 5; i++) {
            (function (i) {
                setTimeout(function () {
                    console.log(i);
                }, 1000)
            })(i)
        }
        //5.
        function f1() {
            var n = 999;
            nAdd = function () {
                n += 1;
            }
            function f2() {
                console.log(n);
            }
            return f2;
        }
        var result = f1();//返回为f2方法体
        result();//执行f2方法   能访问到n  为999
        nAdd();//执行nAdd方法     能访问到n 1000
        result();//执行f2方法   能访问到n  为1000
    </script>