【问题标题】:Javascript Closure Keeps Returning a Function But Should Be a StringJavascript 闭包不断返回一个函数,但应该是一个字符串
【发布时间】:2013-08-19 16:11:28
【问题描述】:

我编写了以下闭包,它应该返回一个字符串,但它返回一个函数对象。我在这里做错了什么?

BDS.CDNS = (function() {

var DEVROOT;
var TESTROOT = '/';
var PRODROOT = '/';
var _IsSecure;

return {
    CDN1: function CDN1() {
        if (BDS.ENV === BDS.ENV_OPTIONS.DEV) {
            return (_IsSecure ? BDS.SECUREPROTOCOL : BDS.UNSECUREPROTOCOL) + DEVROOT;
        }
        else if (BDS.ENV === BDS.ENV_OPTIONS.TEST) {
            return (_IsSecure ? BDS.SECUREPROTOCOL : BDS.UNSECUREPROTOCOL) + TESTROOT;
        }
        else if (BDS.ENV === BDS.ENV_OPTIONS.PROD) {
            return (_IsSecure ? BDS.SECUREPROTOCOL : BDS.UNSECUREPROTOCOL) + PRODROOT;
        }
        return '';
    }
}());

当调用 BDS.CDNS.CDN1 => 函数对象时。它应该返回一个字符串。

谢谢。

【问题讨论】:

  • BDS.CDNS.CDN1() 也许?
  • 它会返回一个字符串......一旦你执行它。
  • 在我看来有点像JCL

标签: javascript function object closures


【解决方案1】:

当您引用BDS.CDNS.CDN1 时,您将获得一个函数对象,因为它是一个函数。为了执行这个函数,你需要包含括号:

BDS.CDNS.CDN1();

【讨论】:

  • 肯尼斯,你是 100% 正确的。我希望有一个远程中枢神经系统触发器,它会为愚蠢的疏忽带来痛苦。你有我的许可拉它并震惊我!谢谢大佬!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-14
  • 2012-03-30
相关资源
最近更新 更多