微信小程序之 var和let区别

let

用let的方式声明的变量,为局部变量,该变量只会在最靠近{ }内的范围有效,出了{}之后,该变量就不能够再用了,否则会报该变量未定义的错误。也就是说,该变量的作用域为所在的代码块内。

//index.js
//获取应用实例
const app = getApp()

Page({
  data: {
  },

  onLoad: function () {
    console.log('App onLoad');

    // 用let的方式声明的i只在for循环内有效,在for循环外引用就会报错i未定义的错误
    for (let i = 0; i < 10; i++) {
      console.log('for循环里面的i的值为'+i);
    }
    console.log(i);
  },
})

截图如下
在这里插入图片描述

var

用var的方式声明的变量,为全局变量,其作用域为所在的函数内。所以重点来了,在当前JS文件的其余函数中,如果直接拿来用,也会报变量未定义的错误。详情请看下面的var的错误使用方式。

Page({
  data: {
    name: '新增参保人',// name的默认值
  },
  addPerson: function (event) {
    // this.data.name = '保存'
    this.setData({
      name: '保存'
    })

  },
  onLoad() {
    console.log('App onLoad');
    // 用var的方式声明的i在onLoad函数内都有效,在其余函数中是没有效果的哦。
    for (var i = 0; i < 10; i++) {
      console.log('for循环里面的i的值为' + i);
    }
    console.log('onLoad函数中i的值' + i);
  },
})

截图如下
在这里插入图片描述
var的错误使用方式

在index.js文件的addPerson:函数中,打印在onLoad函数中声明的var变量i,就会报报变量i未定义的错误。

Page({
  data: {
    name: '新增参保人',// name的默认值
  },
  addPerson: function (event) {
    // this.data.name = '保存'
    this.setData({
      name: '保存'
    })
    console.log('addPerson函数中i的值'+i);
  },
  onLoad() {
    console.log('App onLoad');
    for (var i = 0; i < 10; i++) {
      console.log('for循环里面的i的值为' + i);
    }
    console.log('onLoad函数中i的值' + i);
  },
})

截图如下
在这里插入图片描述
当然,如果你想 用var声明的i在addPerson类中也可以使用的话,那么你可以用this.data.i = i;将i存储在index.js整个文件中

Page({
  data: {
    name: '新增参保人',// name的默认值
  },
  addPerson: function (event) {
    // this.data.name = '保存'
    this.setData({
      name: '保存'
    })
    console.log('addPerson函数中i的值'+this.data.i);
  },
  onLoad() {
    console.log('App onLoad');
    for (var i = 0; i < 10; i++) {
      console.log('for循环里面的i的值为' + i);
    }
    console.log('onLoad函数中i的值' + i);
    this.data.i = i;
  },
})

截图如下
在这里插入图片描述
作者:CoderZb
链接:https://www.jianshu.com/p/e62d4ee72a61
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

发布了36 篇原创文章 · 获赞 12 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_35697034/article/details/96477046
今日推荐