Rumah > hujung hadapan web > tutorial js > Penutupan JavaScript: Soalan dan Jawapan Temuduga Teratas

Penutupan JavaScript: Soalan dan Jawapan Temuduga Teratas

Linda Hamilton
Lepaskan: 2024-11-09 00:43:02
asal
1017 orang telah melayarinya

JavaScript Closures: Top Interview Questions and Answers

Penutupan JavaScript: Soalan dan Jawapan Temuduga Teratas.

1. Apakah penutupan dalam JavaScript?

Jawapan:
Dalam JavaScript, penutupan dibuat apabila fungsi dalam ditakrifkan dalam fungsi luar dan mempunyai akses kepada pembolehubah dan parameter fungsi luar. Walaupun selepas fungsi luar selesai dilaksanakan, fungsi dalam mengekalkan akses kepada pembolehubah tersebut.

2. Mengapakah penutupan penting dalam JavaScript?

Jawapan:
Penutupan adalah penting dalam JavaScript kerana ia membenarkan pengkapsulan data dan privasi fungsi. Ia membantu dalam mengekalkan skop global yang bersih dan membolehkan penciptaan pembolehubah persendirian yang tidak boleh diakses dari luar, yang merupakan aspek asas pengaturcaraan berorientasikan objek.

3. Bolehkah anda memberikan contoh penutupan dalam JavaScript?

Jawapan:

function outerFunction() {
  var outerVariable = "Hello, ";
  function innerFunction(name) {
    console.log(outerVariable + name);
  }
  return innerFunction;
}
var inner = outerFunction();
inner("John"); // Output: "Hello, John"
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini, innerFunction ialah penutupan kerana ia mempunyai akses kepada outerVariable yang ditakrifkan dalam outerFunction walaupun selepas outerFunction selesai melaksanakan.

4. Bagaimanakah anda menggunakan penutupan dalam JavaScript?

Jawapan:
Dalam JavaScript, anda menggunakan penutupan dengan mentakrifkan fungsi dalam dalam fungsi luar dan mengembalikan fungsi dalam. Fungsi dalam mengekalkan akses kepada pembolehubah dan parameter fungsi luar, walaupun selepas fungsi luar selesai dilaksanakan.

5. Apakah output kod berikut?

function outer() {
  var x = 10;
  function inner() {
    console.log(x);
  }
  return inner;
}
var innerFunc = outer();
innerFunc();
Salin selepas log masuk
Salin selepas log masuk

Jawapan:
Keluaran: 10
Penjelasan: Fungsi luar mengembalikan dalam, dan dalam mempunyai akses kepada pembolehubah x yang diisytiharkan dalam luar. Apabila innerFunc dipanggil, ia mencatatkan x, iaitu 10.

6. Apakah output kod berikut?

function outer() {
  var x = 10;
  function inner() {
    console.log(x);
  }
  x = 20;
  return inner;
}
var innerFunc = outer();
innerFunc();
Salin selepas log masuk

Jawapan:
Keluaran: 20
Penjelasan: Nilai x dikemas kini kepada 20 sebelum inner dikembalikan. Apabila innerFunc dipanggil, ia merekodkan nilai x yang dikemas kini, iaitu 20.

7. Apakah output kod berikut?

function outer() {
  var x = 10;
  function inner() {
    var y = 5;
    console.log(x + y);
  }
  return inner;
}
var innerFunc = outer();
innerFunc(); // Output: 15
Salin selepas log masuk

Jawapan:
Keluaran: 15
Penjelasan: inner mempunyai akses kepada kedua-dua x (10) daripada fungsi luar dan y (5) daripada skopnya sendiri, jadi outputnya ialah 15.

8. Apakah output kod berikut?

function outer() {
  var x = 10;
  function inner() {
    var y = 5;
    console.log(x + y);
  }
  var x = 20;
  return inner;
}
var innerFunc = outer();
innerFunc();
Salin selepas log masuk

Jawapan:
Keluaran: 25
Penjelasan: Pembolehubah x ditetapkan semula kepada 20 di dalam fungsi luar sebelum fungsi dalam dikembalikan. Apabila innerFunc dipanggil, ia mencatatkan x y, iaitu 20 5 = 25.

9. Apakah output kod berikut?

function outerFunction() {
  var outerVariable = "Hello, ";
  function innerFunction(name) {
    console.log(outerVariable + name);
  }
  return innerFunction;
}
var inner = outerFunction();
inner("John"); // Output: "Hello, John"
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Jawapan:
Keluaran:
Panggilan pertama: 15
Panggilan kedua: 25

Penjelasan: Pada panggilan pertama, x ialah 10, dan y ialah 5, jadi outputnya ialah 15. Selepas mengemas kini x kepada 20, panggilan kedua mencatatkan 20 5, iaitu 25.

10. Bila hendak menggunakan penutupan dalam JavaScript?

Jawapan:
Anda menggunakan penutupan apabila anda perlu mengekalkan keadaan peribadi atau merangkum pembolehubah yang tidak boleh diakses daripada skop global. Ia berguna untuk mencipta privasi data, terutamanya dalam situasi di mana anda ingin menyekat akses kepada pembolehubah tertentu dan mengawal skop di mana ia boleh diakses atau diubah suai.

11. Apakah penutupan vs panggilan balik?

Jawapan:
Penutupan dan panggil balik ialah dua konsep berbeza dalam JavaScript. Penutupan ialah fungsi yang mengingati persekitaran di mana ia dicipta, dan ia boleh mengakses pembolehubah daripada fungsi luar walaupun selepas fungsi itu kembali. Panggilan balik, sebaliknya, ialah fungsi yang diluluskan sebagai argumen kepada fungsi lain dan dilaksanakan selepas fungsi luar selesai.

12. Apakah dua jenis penutupan?

Jawapan:
Dalam JavaScript, terdapat dua jenis penutupan: penutupan leksikal dan penutupan dinamik. Penutupan leksikal dibuat semasa masa penyusunan dan mempunyai akses kepada pembolehubah dalam skop leksikal, manakala penutupan dinamik dibuat pada masa jalan dan mempunyai akses kepada pembolehubah dalam skop dinamik.

13. Adakah Lambda sama dengan penutupan?

**Jawapan:*
Dalam JavaScript, fungsi lambda hanyalah fungsi tanpa nama yang dibuat dengan cepat tanpa nama. Penutupan, sebaliknya, ialah fungsi yang mengekalkan akses kepada pembolehubah daripada fungsi luar walaupun selepas fungsi luar telah kembali. Walaupun fungsi lambda boleh membuat penutupan, ia tidak sama.

14. Apakah perbezaan antara karipap dan penutup?

Jawapan:
Currying ialah proses mengubah fungsi yang mengambil berbilang argumen ke dalam urutan fungsi, masing-masing mengambil satu argumen. Penutupan, sebaliknya, ialah fungsi yang mempunyai akses kepada pembolehubah daripada skop fungsi luar. Karipap boleh menggunakan penutup, tetapi ia adalah konsep yang berbeza.

15. Adakah penutupan sama dengan enkapsulasi?

Jawapan:
Penutupan dan enkapsulasi adalah berkaitan tetapi tidak sama. Enkapsulasi merujuk kepada konsep penggabungan data dan kaedah yang beroperasi pada data tersebut dalam satu unit, selalunya kelas, dan menyekat akses kepada beberapa komponen objek. Penutupan melibatkan fungsi yang mempunyai akses kepada pembolehubah daripada fungsi luarnya dan sementara penutupan boleh digunakan untuk merangkum data, ia tidak sinonim dengan enkapsulasi.

16. Adakah JavaScript menyokong fungsi bersarang? Bagaimana mereka bekerja?

Jawapan:
Ya, JavaScript menyokong fungsi bersarang. Fungsi bersarang ditakrifkan di dalam fungsi lain, dan ia boleh mengakses pembolehubah dan parameter fungsi luarnya. Ini membenarkan penutupan, enkapsulasi dan struktur kod modular.

function outerFunction() {
  var outerVariable = "Hello, ";
  function innerFunction(name) {
    console.log(outerVariable + name);
  }
  return innerFunction;
}
var inner = outerFunction();
inner("John"); // Output: "Hello, John"
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

17. Bolehkah anda menerangkan apakah Persekitaran Leksikal dalam JavaScript?

Jawapan:
Dalam JavaScript, Persekitaran Leksikal ialah struktur yang memegang pengikatan pembolehubah, fungsi dan rujukan lain kepada nilai dalam skop tertentu. Ia merupakan bahagian penting dalam konteks pelaksanaan JavaScript dan membantu dalam menentukan cara pembolehubah diakses dan diselesaikan semasa masa jalan.

18. Bagaimanakah pengumpulan sampah berfungsi dengan Persekitaran Leksikal dan fungsi bersarang dalam JavaScript?

Jawapan:
Dalam JavaScript, pengumpulan sampah ialah proses menuntut semula memori yang digunakan oleh objek yang tidak diperlukan lagi. Apabila fungsi dicipta dan penutupan dibentuk, persekitaran leksikal, yang menyimpan rujukan kepada pembolehubah, mungkin menghalang memori daripada dikumpul sehingga penutupan tidak lagi digunakan.

function outer() {
  var x = 10;
  function inner() {
    console.log(x);
  }
  return inner;
}
var innerFunc = outer();
innerFunc();
Salin selepas log masuk
Salin selepas log masuk

19. Apakah kes penggunaan biasa penutupan dalam JavaScript?

Jawapan:
Kes penggunaan biasa untuk penutupan termasuk pengkapsulan data, kilang fungsi, penghafalan, penghias pelaksana dan mengekalkan keadaan dalam pengaturcaraan tak segerak.

20. Apakah kelebihan menggunakan penutupan dalam JavaScript?

Jawapan:
Penutupan dalam JavaScript memberikan beberapa kelebihan, seperti privasi, kilang fungsi dan keupayaan untuk mengekalkan keadaan antara panggilan fungsi. Ia membenarkan kod yang lebih berkuasa, boleh diselenggara dan modular serta menyokong paradigma pengaturcaraan berfungsi dalam JavaScript.

21. Apakah kelemahan atau perangkap apabila bekerja dengan penutupan dalam JavaScript?

Jawapan:
Bekerja dengan penutupan boleh membawa kepada kemungkinan perangkap seperti kebocoran memori jika penutupan tidak diurus dengan betul, menyimpan rujukan yang tidak diingini kepada pembolehubah dalam ingatan atau mengubah suai pembolehubah luar secara tidak sengaja apabila tidak dimaksudkan.

22. Bagaimanakah penutupan menjejaskan mekanisme pengumpulan sampah JavaScript?

Jawapan:
Penutupan memberi kesan kepada kutipan sampah dengan menyimpan rujukan kepada pembolehubah dalam ingatan walaupun selepas fungsi luar selesai dilaksanakan. Ini boleh menghalang kutipan sampah daripada mengosongkan ingatan jika penutupan mengandungi rujukan kepada objek yang tidak diperlukan lagi.

? Berhubung dengan saya di LinkedIn:

Mari kita menyelami dunia kejuruteraan perisian bersama-sama lebih dalam! Saya kerap berkongsi cerapan tentang JavaScript, TypeScript, Node.js, React, Next.js, struktur data, algoritma, pembangunan web dan banyak lagi. Sama ada anda ingin meningkatkan kemahiran anda atau bekerjasama dalam topik yang menarik, saya ingin berhubung dan berkembang dengan anda.

Ikuti saya: Nozibul Islam

Atas ialah kandungan terperinci Penutupan JavaScript: Soalan dan Jawapan Temuduga Teratas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan