意外的令牌(使用模块化模式

时间:2016-06-19 16:01:23

标签: javascript jquery

https://jsfiddle.net/4qv24djp/1/

var module_pattern = (function() {
  var private = 'private';

  a: function() {
      console.log('function a and the private variable is ' + private);
    },

    b: function() {

    }

  return {
    a: a
  }
})();

module_pattern.a();

上述代码有什么问题?我希望它会打印功能a

的控制台

2 个答案:

答案 0 :(得分:0)

您需要将变量和函数声明为变量='变量'而不是变数:变量。



var module_pattern = (function() {
  var private = 'private';

  var a = function() {
      console.log('function a and the private variable is '  + private);
    };

  var  b = function() {

    };

  return {
    a: a
  }
})();

module_pattern.a();




答案 1 :(得分:-1)

您使用:声明了变量,而您需要使用=。冒号仅在对象声明中使用。您也没有使用;,结束该行。变量ab前面需要var。否则,它们将是全局可访问的,这正是您不希望使用模块化模式的。

查看工作小提琴:https://jsfiddle.net/4qv24djp/3/

var module_pattern = (function() {
    var private = 'private';

    var a = function() {
      console.log('function a and the private variable is ' + private);
    };

    var b = function() {

    };

    return {
        a: a
    }
})();

module_pattern.a();

您也可以直接返回对象中的函数:

var module_pattern = (function() {
    var private = 'private';

    return {
        a: function() {
            console.log('function a and the private variable is ' + private);
        },
        b: function() {

        }
    };
})();

module_pattern.a();