我有一个属性为
的数据对象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属性报告为未定义。
但是为什么?
我的重构不正确吗?
我在做什么错了?
答案 0 :(得分:2)
问题是重构的valueAsAString
函数从不返回任何内容。没有return
语句的函数默认情况下将返回undefined
,这就是numPad.valueAsAString()
是undefined
的原因。
在valueAsAString
内,只需更改
func(value);
到
return func(value);
您的功能应该可以工作。