你在哪测试的结果?
(function() {
    return test1;
});这压根不会执行,只是返回函数。

解决方案 »

  1.   

    把函数声明写在前面就好了(function() {        // 这是函数声明 虽然是匿名函数 但也是声明
        return test1;
    });
    var test1 = function() {   //这是函数表达式
        console.log('test1');
    }
    var test2 = function() {
        console.log('test2');
    }
      

  2.   

    var test1 = function() {
        console.log('test1');
    }
    var test2 = function() {
        console.log('test2');
    };/////////应为你这里少了个分号,下面的括号就相当于执行了test2
     
    (function() {
        return test1;
    });