我有一个属性为的数据对象
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);
并且您的功能应该正常工作。