变量在函数内部和外部具有不同的值

时间:2015-06-11 18:22:17

标签: javascript function models

我试图在变量newID中设置ID的值。 To" fill"变量I我正在阅读这样的模型:

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的方式,或者我在函数内部增加它的方式......

提前致谢。

1 个答案:

答案 0 :(得分:3)

这将是一个评论,但它是如此巨大,所以把它作为评论:

oModel.read函数可能是异步的,所以当你执行代码的时候基本上就是这样:

1)您将变量声明为0。

2)执行读取功能。

3)执行console.log(var)=>这个打印0.(因为读取还没有完成,此时它仍然是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();
   }
}