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;
},
})