变量在函数内外有不同的值
Variable has different values inside and outside a function
我正在尝试在变量 newID 中设置 ID 的值。
对于 "fill" 变量,我正在读取这样的模型:
press: function() {
var newID = 0;
oModel.read("/Delivery", null, null, true, function(oData) {
newID = oData.results[oData.results.length - 1].ID;
console.log(newID);
}
console.log(newID);
}
第一个 console.log 给了我想要的值,但第二个给了我 0(第一个条件集)。我试过使用增量运算符 += 并使用 this.newID 但都是徒劳的。
这确实是一个愚蠢的问题,可能是我在控制台上调用 newID 的方式或者我在函数中递增它的方式...
提前致谢。
这本来是一条评论,但它太大了,所以把它当作评论:
oModel.read 函数可能是异步的,所以当您执行代码时,基本上发生的是这样的:
1) 你把变量声明为0。
2) 你执行读取函数。
3) 你执行console.log(var) => 这个print 0。(因为read还没有结束,此时还是0)。
4) 读取函数完成它工作将所需的值分配给 var 并执行 console.log(var) => 这将打印所需的值。
如果是这种情况,您可以执行如下操作:
var press = function() {
var newId = 0;
function callback() {
console.log(newId);
}
oModel.read("/Delivery", null, null, true, function(oData) {
newID = oData.results[oData.results.length - 1].ID;
console.log(newID);
callback();
}
}
我正在尝试在变量 newID 中设置 ID 的值。 对于 "fill" 变量,我正在读取这样的模型:
press: function() {
var newID = 0;
oModel.read("/Delivery", null, null, true, function(oData) {
newID = oData.results[oData.results.length - 1].ID;
console.log(newID);
}
console.log(newID);
}
第一个 console.log 给了我想要的值,但第二个给了我 0(第一个条件集)。我试过使用增量运算符 += 并使用 this.newID 但都是徒劳的。
这确实是一个愚蠢的问题,可能是我在控制台上调用 newID 的方式或者我在函数中递增它的方式...
提前致谢。
这本来是一条评论,但它太大了,所以把它当作评论:
oModel.read 函数可能是异步的,所以当您执行代码时,基本上发生的是这样的:
1) 你把变量声明为0。
2) 你执行读取函数。
3) 你执行console.log(var) => 这个print 0。(因为read还没有结束,此时还是0)。
4) 读取函数完成它工作将所需的值分配给 var 并执行 console.log(var) => 这将打印所需的值。
如果是这种情况,您可以执行如下操作:
var press = function() {
var newId = 0;
function callback() {
console.log(newId);
}
oModel.read("/Delivery", null, null, true, function(oData) {
newID = oData.results[oData.results.length - 1].ID;
console.log(newID);
callback();
}
}