Javascript:如果参数未作为函数调用,则返回默认值

Javascript: returning a default value if a parameter is not called as a function

本文关键字:函数调用 返回 默认值 如果 参数 Javascript      更新时间:2023-09-26

我想知道如何在变量调用中返回默认值,假设此变量返回一个带有函数的对象,但是如果我直接调用它(即直接调用模块,而不是module.get)我希望它从其内部函数之一返回默认值:

目前我有这个:

function createModule() {    
    module = (function() {
        var val = null;
        function getVal() {
            return val;
        }
        function setVal(newVal) {
            val = newVal;
        }
        return {
            get: getVal, 
            set: setVal
        }
    })();
}

目前模块返回一个object,您可以使用get()set()参数函数来修改其val变量,但是我希望模块的默认返回值为"模块"。

有什么办法可以做到这一点吗?

编辑:我想要的功能是这样的:

> module.set('testValue');
> module.get();
'testValue'
> module; // or using module(); instead
'testValue'

我想给module打电话或module()与打电话module.get()完全相同

你可以使module对象成为类似get的函数:

module = (function() {
    var val = null;
    function getVal() {
        return val;
    }
    function setVal(newVal) {
        val = newVal;
    }
    function module() {
        return val;
    }
    module.get = getVal;
    moudle.set = setVal;
    return module;
})();
> module.set('testValue')
> module.get()
'testValue'
> module()
'testValue'

但是我不明白你为什么需要它。

function createModule(opt) {
  var options = {
    val: 'foo'
  };

  if(typeof opt === 'object'){
    // Using underscore's extend method... jQuery has a similar method, or you can create your own.
    _.extend(options, opt);
  }
  module = (function() {
      var val = options.val;
      function getVal() {
          return val;
      }
      function setVal(newVal) {
          val = newVal;
      }
      return {
          get: getVal, 
          set: setVal
      }
  })();
}