收藏
回答

全局变量无法调用

问题模块 框架类型 问题类型 操作系统 工具版本
开发者工具 小程序 Bug Windows v1.02.1812271



最后一次编辑于  03-06  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

3 个回答

  • 铭锋科技
    铭锋科技
    03-06

    app.js代码贴出来看下

    03-06
    赞同
    回复 1
    • 咩咩籽
      咩咩籽
      03-06

      好的


      03-06
      回复
  • 咩咩籽
    咩咩籽
    03-06

    //app.js

    App({

      onLaunch: function () {

        // 展示本地存储能力

        var logs = wx.getStorageSync('logs') || []

        logs.unshift(Date.now())

        wx.setStorageSync('logs', logs)


        // 登录

        wx.login({

          success: res => {

            // 发送 res.code 到后台换取 openId, sessionKey, unionId


          }

        })


        // 获取用户信息

        wx.getSetting({

          success: res => {

            if (res.authSetting['scope.userInfo']) {

              // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框

              wx.getUserInfo({

                success: res => {

                  // 可以将 res 发送给后台解码出 unionId

                  this.globalData.userInfo = res.userInfo

                  // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回

                  // 所以此处加入 callback 以防止这种情况

                  if (this.userInfoReadyCallback) {

                    this.userInfoReadyCallback(res)

                  }

                }

              })

            }

          }

        })

        //获取地理位置

        wx.getLocation({

          type: 'gcj02', // 返回可以用于wx.openLocation的经纬度

          success:res => {

            this.globalData.latitude = res.latitude

            this.globalData.longitude = res.longitude

            // const latitude = res.latitude

            // const longitude = res.longitude

            // wx.openLocation({

            //   latitude,

            //   longitude,

            //   scale: 18

            // })

          }

        })

      },

      globalData: {

        userInfo: null,

        latitude: null,

        longitude: null

      },

      gg:function(){

        console.log("全局变量")

      }

    })


    03-06
    赞同
    回复
  • Smile
    Smile
    03-06

    如果你一开始是设置app.globalData.latitude为null,后面才设置app.globalData.latitude的值得话,这样正常,如果是一开始就有值的话,请把app.js贴出来看看,app是一个对象,latitude在上面出现有值也不是不可能

    03-06
    赞同
    回复 3
    • 咩咩籽
      咩咩籽
      03-06

      请看

      03-06
      回复
    • Smile
      Smile
      03-06回复咩咩籽

      也就是说你一开始设置的值是null,你设置的值是小程序onLaunch执行的,onLauch是小程序初始化完了才执行,这样不就可以解析清楚了,app.gg()初始化过程中也可以执行,你在Page()外执行console.log(app.globalData.latitude),app.globalData.latitude小程序初始化过程中就可以执行了,小程序还没初始化完你就执行了,拿到的值是你设置的null不是很正常吗?你应该是执行设置值了之后才执行console.log(app.globalData.latitude)才可以执行,这就是生命周期执行顺序问题而已

      03-06
      1
      回复
    • 咩咩籽
      咩咩籽
      03-06回复Smile

      谢谢哈


      03-06
      回复