在ES6中我們有兩種定義變數的方式:let const let特點: 1.let定義時不會進行變數聲明提升 2.變數不允許被重覆定義 3.變數不可以被刪除 4.在for迴圈當中用let定義i 迴圈時可以保存 i 的值 5.在塊級元素中用let定義的變數只能在當前塊級作用域中使用(註:凡是用{}包裹的 ...
在ES6中我們有兩種定義變數的方式:let const
let特點:
1.let定義時不會進行變數聲明提升
2.變數不允許被重覆定義
3.變數不可以被刪除
4.在for迴圈當中用let定義i 迴圈時可以保存 i 的值
5.在塊級元素中用let定義的變數只能在當前塊級作用域中使用(註:凡是用{}包裹的都是塊級作用域,但是除了對象以外)
const特點:(聲明常量或者不可被修改的變數) 1.const聲明的變數值不允許被修改 2.不會進行變數聲明提升 3.常量不允許被刪除
對let第四個特點給大家舉個小慄子
若body標簽裡面有五個button
<button>按鈕1</button> <button>按鈕2</button> <button>按鈕3</button> <button>按鈕4</button> <button>按鈕5</button> script標簽裡面我們來個標簽綁定一個小事件 <script> var btnArr = document.getElementsByTagName("button"); for (let i = 0; i < btnArr.length; i++) { btnArr[i].onclick = function(){ console.log(i); } } 用let定義 i 時點擊不同的按鈕時,列印的是每個按鈕對應i var btnArr = document.getElementsByTagName("button"); for (var i = 0; i < btnArr.length; i++) { btnArr[i].onclick = function(){ console.log(i); } } 用var定義 i 時點擊不同的按鈕時,每個按鈕列印的都是 5(即迴圈後 i 的值,因為事件時非同步執行的,但是for迴圈不會等待非同步事件) </script>