我开始失去理智了,需要帮助。我有一个函数如下:
private generateTimeObject(firstObject: someInterface, secondObject?: someInterface) {
let firstTime;
let secondTime;
if (condition) {
firstTime = firstObject.time;
secondTime = secondObject ? secondObject.time : null;
} else {
firstTime = firstObject.someOtherTimeValue;
secondTime = secondObject ? secondObject.someOtherTimeValue : null;
}
firstObject.customValues = {
firstTimeValue: firstTime,
secondTimeValue: secondTime
};
}
现在,下面的场景:
函数被这样调用:generateTimeObject(firstObject)。这意味着,该函数创建一个subbobject customValues,如下所示:
firstObject.customValues = {firstTimeValue, null}
现在,这个函数再次被调用。这回像这样:generateTimeObject(firstObject, secondObject).
函数现在应该将firstObject写成如下
firstObject.customValues = {firstTimeValue, secondTimeValue}
然而,我不能让这个工作。secondTimeValue仍然为空,我真的不知道为什么。我也试过使用Object.assign(),但它仍然不起作用。
如果你能帮我解决这个问题,我将不胜感激。
这是一个jsFiddle。可悲的是,它似乎工作良好,所以我的问题一定是在其他地方。我认为这与参考或范围有关,但我就是不明白。https://jsfiddle.net/pna75vrd/6/
在这种情况下,我解决这个问题的下一步是附加一个调试器并逐步执行代码,或者简单地添加一些console.log()语句来输出变量的值,以便您可以查询它们是什么,以及它们与您期望的值有何不同。例如:
private generateTimeObject(firstObject: someInterface, secondObject?: someInterface) {
let firstTime;
let secondTime;
console.log("firstObject=", firstObject)
console.log("secondObject=", secondObject)
if (condition) {
console.log("condition==true")
firstTime = firstObject.time;
secondTime = secondObject ? secondObject.time : null;
} else {
console.log("condition==false")
firstTime = firstObject.someOtherTimeValue;
secondTime = secondObject ? secondObject.someOtherTimeValue : null;
}
console.log("firstTime=", firstTime)
console.log("secondTime=", secondTime)
firstObject.customValues = {
firstTimeValue: firstTime,
secondTimeValue: secondTime
};
console.log("Again, firstObject=", firstObject)
}
在我的脑海中,可能是当函数第二次调用时,secondObject.time
或secondObject.someOtherTimeValue
为null。