let x = 10 { let x = 2 console.log(x) // 2 } console.log(x) // 10
let,有自己的區塊作用域,不會蓋掉底下宣告的變數
1 2 3 4 5 6
var x = 10 for(var i=0;i<5;i++){ var x = 5 console.log(x) //5 } console.log(x) // 5
var,沒有自己的區塊作用域,會蓋掉底下宣告的變數
1
const x = 10;
const用來宣告常數不會被改變,不過如果是物件,仍然可以使用提供的方法去改變裡面的數值。
結論 如果沒有必要需求還是用let或const好,因為不會往下覆之後宣告的變數。
2. arrow function
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
<button>按鈕</button> <script> // 使用 addEventListener 監聽事件 var button = document.querySelector('button'); var fn_arrow = () => { // 建立 function 時 this 指向 Window console.log(this.constructor.name); // 執行 function 時 this 指向 Window }; var fn = function(){ // 建立 function 時 this 指向 Window console.log(this.constructor.name); // 執行 function 時 this 指向 HTMLButtonElement };