Показать сообщение отдельно
  #13 (permalink)  
Старый 06.07.2017, 21:37
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

davisaliw,
function cfFactory() {
    var cf = {
        doe_cnt: t4q.H5I,
        doact: t4q.N40,
        chknull: function (q) {
            return (null == q) ? -1 : q;
        },
        getFloatVal: function (Y) {
            if (cf.chknull(Y) != -1 && !isNaN(Y)) {
                var b = parseFloat(Y);
                if (!isNaN(b)) return b.toFixed(2);
            }
            return -1;
        },
        cdoa: function (Y) {
            if (Y) {
                var v = cf.getFloatVal(Y.alpha),
                    h = cf.getFloatVal(Y.beta),
                    W = cf.getFloatVal(Y.gamma),
                    F = cf.doe_cnt + "," + v + "," + h + "," + W + ";";
                cf.doact = cf.doact + F,
                    cf.doe_cnt++;
                console.log(cf.doact);
            }
        }
    }
    return cf;
}


Просто не используйте в таких случаях глобальные переменные.
Делайте эту переменную в контексте функции, и передавайте её в другую функцию в качестве параметров. Т.е. в вашем случае должно быть так
function cfFactory() {
    var t4q = {
        'H5I': 0,
        'N40': "",
    };
    var cf = {
            doe_cnt: t4q.H5I,
            doact: t4q.N40,
            chknull: function (q) {
                return (null == q) ? -1 : q;
            },
            getFloatVal: function (Y) {
                if (cf.chknull(Y) != -1 && !isNaN(Y)) {
                    var b = parseFloat(Y);
                    if (!isNaN(b)) return b.toFixed(2);
                }
                return -1;
            },
            cdoa: function (Y) {
                if (Y) {
                    var v = cf.getFloatVal(Y.alpha),
                        h = cf.getFloatVal(Y.beta),
                        W = cf.getFloatVal(Y.gamma),
                        F = cf.doe_cnt + "," + v + "," + h + "," + W + ";";
                    cf.doact = cf.doact + F,
                        cf.doe_cnt++;
                    console.log(cf.doact);
                }
            }
        };
    return cf;
}

function test(testobj) {
    var cf = cfFactory();
    cf.cdoa(testobj);
};

module.exports.test = test;

Функция cfFactory всегда возвращает "новую" переменную cf, т.е. другой объект.
cfFactory() !== cfFactory() // true

Последний раз редактировалось EmperioAf, 06.07.2017 в 21:51.
Ответить с цитированием