Javascript闭包保持返回一个函数,但应该是一个字符串

Javascript Closure Keeps Returning a Function But Should Be a String

本文关键字:一个 字符串 函数 Javascript 闭包 返回      更新时间:2023-09-26

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

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时,您会得到一个函数对象,因为它是一个函数。为了执行此函数,您需要包含括号:

BDS.CDNS.CDN1();