收藏
回答

在页面的js文件的开头定义变量,不同于在data里定义吗?

有两个(页面的)js文件,不同之处是第二个文件的开头定义了两个变量,而且在data里定义了同名变量。经测试第二个文件里那两个变量的值是以开头定义为准的。这是什么原因。两个 js文件内容如下:

mypage1.js
-----------------------------
Page({
   data:{
     lcstr1; "abcd",
     lcstr2; "1234"
   },
   func1: function(){},
   func2: function(){}
})

mypage2.js
-----------------------------
var util = require("util.js")
const gd1 = getApp().globalData

Page({
   data:{
     val1; "abcd",
     val1; "1234",
     util: {},
     gd1:  {}
   },
   func1: function(){},
   func2: function(){}
})

[END]

最后一次编辑于  11-23
回答关注问题邀请回答
收藏

3 个回答

  • 建
    11-23

    所以 gd1 == this.data.gd1 ??





    11-23
    赞同 1
    回复 5
    • 英忠通信
      英忠通信
      11-23
      明白了,在page()之前定义的变量直接用,在page({data{}})里定义的,要加this.data。那么page()之前定义的也算是页面内变量吗?
      11-23
      回复
    • 建
      11-23回复英忠通信
      算的,只要你data里面的变量使用的时候不重复定义相同的变量名就不会覆盖。如:
       const pn = getApp().globalData .pn;
      Page({
          data:{
              pn: 20
          },
          onLoad: function(){
              var pn = this.data.pn;//  这样会覆盖
          }
      })
      11-23
      1
      回复
    • 英忠通信
      英忠通信
      11-23
      而且page()外定义的变量,似乎不能用在 WXML 页面中
      11-23
      回复
    • 建
      11-23回复英忠通信
      在wxml 中用到的变量要写在page({data:{  }})里面
      11-23
      1
      回复
    • 英忠通信
      英忠通信
      11-25
      不用在WXML的变量,都在 page({})前面定义,用起来也方便(无需this.data.)。这样可以吗?
      11-25
      回复
  • 英忠通信
    英忠通信
    11-23

    我发现把变量放在 page() 的前面定义,有个好处:在js文件内的任何位置(任意层函数调用里)使用变量时不用加this.data在前面。只要不在 WXML 上使用,变量大可放在 page() 之前的位置定义。

    11-23
    赞同
    回复
  • 米法(BINNIE SMILE)
    米法(BINNIE SMILE)
    11-23

    每个字、字母都是认识的,组合在一起就看不懂了

    11-23
    赞同
    回复 1
    • 英忠通信
      英忠通信
      11-23
      可能是我写的不明确抱歉。简单说就是在 page({})之前定义的变量的作用域是什么,等同于在page({data:{}})里定义的作用域吗
      11-23
      回复
问题标签