
初學小程序時,在js中經常會申明變量,但是有時用var,有時用let,有時又用const。開始也沒有仔細去研究區別,反正一律就用var(現在看來,以前的自己好懶)
概念:var申明的變量是全局變量,其作用域為所在的函數內。
Page({ data: { }, onLoad: function (options) { var k=this k.a() k.b() }, a:function(){ var a=4 console.log("a函數中a="+a) }, b:function(){ var a=5 console.log("b函數中a=" +a) }})
操控臺打印結果
(資料圖)
總結:從上面的測試代碼我們可以看出,var 申明變量的作用范圍只是在本函數內,在其他函數中是不起作用的。就像上述例子中a方法中的a變量只存在于a函數,對b函數中的a無影響。
概念:let申明的變量是局部變量,該變量只會在最靠近{ }內的范圍有效,出了{}之后,該變量就不能夠再用了,否則會報該變量未定義的錯誤。也就是說,該變量的作用域為所在的代碼塊內。
Page({ data: { }, onLoad: function (options) { var k=this k.a() }, a:function(){ let i=1 for(let i=0;i<5;i++) { console.log("括號中的i="+i) } console.log("括號外面的i="+i) },})
控制臺打印結果
總結:從上面的測試代碼我們可以看出,let申明變量的作用域只存在局部(可以理解為一個中括號內)。一旦出了括號,變量值就不是預先申明的值。
概念:一般用于申明常量,一般寫在js文件的開頭
const x=1Page({ data: { }, onLoad: function (options) { var k=this k.a() k.b() }, a:function(){console.log("a函數中x="+x) }, b:function(){ console.log("b函數中x=" + x) }})
控制臺打印結果
總結:可以看出,申明在js頭部的const 常量,在整個js中都可以得到該變量的值。那么假設:a函數中申明一個const常量,那么b函數中可以正確打印其值嗎?
測試!
Page({ data: { }, onLoad: function (options) { var k=this k.a() k.b() }, a:function(){ const x = 1console.log("a函數中x="+x) }, b:function(){ console.log("b函數中x=" + x) }})
控制臺打印結果
說明:這里可以看出,a函數中申明的const常量x,在b函數中并不可以正確打印其值,說明其作用域并沒有在b中!如果以后需要js中所有的函數都可以使用一個常量,那么就應該在js文件最上方申明const常量。