聽說篇幅太長沒人想看
試著寫精簡一點,希望仍能清楚表達意思QQ
解釋 let
、const
和 var
的區別。
var:全域定義變數/不論是在最頂層或是子層宣告,都能被其他地方取用/可以重複宣告相同變數名稱
const:區域定義變數/不可變變數=>無法重新賦值/不可重複宣告相同變數名稱
let:區域定義變數/可變變數=>可以重新賦值/不可重複宣告相同變數名稱
什麼是閉包?閉起來的鮑
核心概念:外部函式的內部函式,可以訪問外部函式定義的變數,並在內部函式中使用該變數
一直覺得從名字來理解閉包有點困難,無法很好地瞭解他在幹嘛
不如改名叫做"內函外變",這樣很容易就知道他在幹嘛ㄌ
解釋 this
關鍵字。
this 是 JavaScript 中的一個關鍵字(其他語言也有),它在函數或方法的執行過程中,提供一種方式來使用函數執行時的上下文(或稱 "當前物件")。
this 的值取決於函數如何被調用,根據使用方式的不同,會指向不同的物件
this 常用的方式如下:
a.在全域函數或獨立函數調用中,this 通常指向全域對象(如瀏覽器中的 window)。
function showThis() {
console.log(this); // 在瀏覽器中,這會顯示全域物件 window
}
showThis(); // logs window
b.在物件的方法中,this 指向該方法的那個物件。
const person = {
name: 'Alice',
greet: function() {
console.log(`Hello, my name is ${this.name}`);
}
};
person.greet(); // logs "Hello, my name is Alice"
c.在建構函數中,this 指向透過 new 運算子創建的新物件。
function Person(name) {
this.name = name;
this.greet = function() {
console.log(`Hello, my name is ${this.name}`);
};
}
const alice = new Person('Alice');
alice.greet(); // logs "Hello, my name is Alice"
d.在箭頭函數中,this 會使用包圍它的函數。
const person = {
name: 'Alice',
greet: function() {
// 箭頭函數在這裡捕獲了 greet 函數作用域的 this
const sayName = () => {
console.log(`Hello, my name is ${this.name}`);
};
sayName();
}
};
person.greet(); // logs "Hello, my name is Alice"
參考資料:
https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Closures
https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Operators/this