iT邦幫忙

2024 iThome 鐵人賽

DAY 2
1

聽說篇幅太長沒人想看
試著寫精簡一點,希望仍能清楚表達意思QQ

  • 解釋 letconstvar 的區別。
    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


上一篇
Day-01 JavaScript 問題
下一篇
Day-03 JavaScript 問題
系列文
Web仔常見的面試問題 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言