收藏
回答

变量的范围,为什么扩号外的变量没结果?

    var nLastRecord

    const db = wx.cloud.database()

    db.collection('dic_food')

    .orderBy('food_id', 'desc')

    .limit(0)

    .get({

      success: res => {

        nLastRecord=res.data[0].food_id

        console.log('nLastRecord1', nLastRecord)

        next

      },

    })

    console.log('nLastRecord2', nLastRecord)


nLastRecord2 undefined

nLastRecord1 6

为什么扩号外的变量没结果?


回答关注问题邀请回答
收藏

2 个回答

  • Admin²⁰²¹
    Admin²⁰²¹
    2020-04-13

    因为异步了,跟变量作用域无关。

    你可以看到先打印2(以下把log1,log2简称为1,2),如下:

    nLastRecord2 undefined
    


    说明这条语句2先于1执行,代表的是1还没执行就先执行2了,这个时候变量的值是undefined的。为什么会这样,因为db.collection('dic_food')以及后面的代码是异步执行的,就是不等待执行结果继续往下执行打印2

    而1是在db.collection('dic_food')以及后面的代码的回调中执行的,回调的时候已经有值了,所以能打印正确的值

    2020-04-13
    有用 2
    回复 3
  • 悠然~
    悠然~
    2020-04-13

    一个是全局变量一个是局部变量,赋值只附给了局部变量

    2020-04-13
    有用
    回复
登录 后发表内容
问题标签