所以这个问题几乎解释了我的问题。我正在处理代码,以便从数据库创建特定记录的更改日志。为了保持代码清洁并坚持角度方面,我选择使用angular.forEach函数循环记录并比较每个字段(注意vm.uneditClient和vm.editClient是完全相同的记录类型,每个来自同一个数据库,所以循环一个而不访问另一个正确的字段不是问题)。这就是我对此非常好奇的地方:
function setChangeLog() {
angular.forEach(vm.uneditClient, function (value, key) {
if (vm.uneditClient[key] !== vm.editClient[key]) {
console.log(value + " is not equal to " + vm.editClient[key]);
vm.changeLog.push('Changing ' + value + ' to ' + vm.editClient[key]);
}
});
}
假装我将空白字段更改为" 234"这就是控制台记录的内容:
is not equal to 234
它将值留空。现在我知道有些人可能正在考虑更改控制台日志语句中的值变量,我已将其更改回vm.uneditClient [key]并且它没有任何区别,因为某些原因如果该值完全消失了。为了检查我的理智,我甚至在if下面创建了一个局部变量:
function setChangeLog() {
angular.forEach(vm.uneditClient, function (value, key) {
var val = vm.uneditClient[key];
console.log(val);
if (vm.uneditClient[key] !== vm.editClient[key]) {
console.log(val);
console.log(value + " is not equal to " + vm.editClient[key]);
vm.changeLog.push('Changing ' + value + ' to ' + vm.editClient[key]);
}
});
}
为了确认我的理智,我运行这个函数只是为了发现这个值确实完好无损地超过了if并且完美记录了!...但是如果我的局部变量突然变成空白并且只输出一个空行到控制台。
我真的想知道我做错了什么或者是否有其他人遇到过这个问题?