JS的變量申明
var
- 可以重復聲明
- 無法限制修改,即常量
- 沒有塊級作用域
{}
ES6的變量申明
let
- 不能重復聲明
- 變量——可以修改
- 只在塊級作用域內(nèi)有效
const
- 不能重復聲明
- 常量——不能修改
- 只在塊級作用域內(nèi)有效
閉包
- 簡單說,就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)
- 函數(shù)執(zhí)行的時候分配棧,執(zhí)行結束后會回收棧(GC——垃圾回收)
- 在JS里面
- 底層:棧
- 高層:把函數(shù)當作對象處理
- 閉包——不會回收棧
<script>
window.onload=function(){
var aBtn=document.getElementsByTagName('input');
//閉包
//var 沒有塊級作用域
for(var i=0;i<aBtn.length;i++){
(function (i){
aBtn[i].onclick=function(){
alert(i);
}
})(i);
}
//let 有塊級作用域
for(let i=0;i<aBtn.length;i++){
aBtn[i].onclick=function(){
alert(i);
}
}
}
</script>
<body>
<input type="button" value="按鈕1"/>
<input type="button" value="按鈕2"/>
<input type="button" value="按鈕3"/>
</body>