我有一个属性为的数据对象

displaySubtotal


我可以通过以下方式更新该属性的值:

data.displaySubtotal = numPad.valueAsAString();


我的方法valueAsAString()是:

var valueAsAString = function() {
    var value = makeValue();

    if (value) {
        return value;
    }
    return 0;

};


好的,因此当我尝试像这样抽象该函数时,问题就来了:

var valueAsAString = function() {
    var value = makeValue();

    func(value);

};

var func = function(x) {
    if (x) {
        return x;
    }
    return 0;
}


此时,它不再更新displaySubtotal属性。 displaySubtotal属性报告为未定义。

但为什么?

我的重构不正确吗?

我究竟做错了什么?

最佳答案

问题是重构的valueAsAString函数从不返回任何内容。没有return语句的函数将默认返回undefined,这就是numPad.valueAsAString()undefined的原因。

valueAsAString内,只需更改



    func(value);




    return func(value);


并且您的功能应该正常工作。

09-25 16:37