


Soalan temuduga teknikal javascript yang paling mencabar dan paling sukar dengan penyelesaian.
Hello! Saya Vishal Tiwari dan saya akan memberikan anda beberapa soalan temuduga javascript yang mencabar.
1. Apakah output kod berikut?
console.log(typeof null); // Output?
Jawapan:
Output: objek
Penjelasan: Ini adalah kebiasaan yang terkenal dalam JavaScript. Pengendali jenis mengembalikan "objek" apabila digunakan pada null, walaupun null bukan objek. Tingkah laku ini disebabkan oleh cara JavaScript dilaksanakan dan telah dikekalkan untuk keserasian ke belakang.
2. Apakah yang akan menjadi output kod berikut?
console.log(0.1 + 0.2 === 0.3); // Output?
Jawapan:
Output: palsu
Penjelasan: Disebabkan cara aritmetik titik terapung berfungsi dalam JavaScript (dan banyak bahasa pengaturcaraan), 0.1 0.2 tidak sama dengan 0.3. Sebaliknya, ia menghasilkan 0.30000000000000004, yang membawa kepada perbandingan mengembalikan palsu.
3. Apakah yang akan menjadi output kod berikut?
const a = {}; const b = { key: 'b' }; const c = { key: 'c' }; a[b] = 123; // What happens here? console.log(a[b]); // Output?
Jawapan:
Output: 123
Penjelasan: Apabila anda cuba menetapkan sifat pada objek menggunakan objek lain sebagai kunci (a[b]), JavaScript menukar objek b kepada rentetan, yang menghasilkan "[objek Objek ]". Oleh itu, anda pada dasarnya menetapkan sifat "[objek objek]" kepada 123 dan apabila anda log a[b], ia mengembalikan 123.
4. Apakah output kod berikut?
const arr = [1, 2, 3]; arr[10] = 11; console.log(arr.length); // Output?
Jawapan:
Output: 11
Penjelasan: Apabila anda menetapkan nilai pada indeks yang lebih besar daripada panjang semasa tatasusunan (seperti arr[10] = 11), JavaScript mencipta "slot kosong" dalam tatasusunan untuk indeks dari 3 hingga 9. Walau bagaimanapun, sifat panjang tatasusunan mencerminkan indeks tertinggi tambah satu, yang dalam kes ini ialah 11.
5. Apakah yang akan menjadi output kod berikut?
let x = 1; let y = 2; const obj = { x: 10, y: 20, sum: function() { return this.x + this.y; } }; console.log(obj.sum()); // Output? console.log(obj.sum.call({ x: 100, y: 200 })); // Output? console.log(obj.sum.apply({ x: 1000, y: 2000 })); // Output?
Jawapan:
Output:
- Konsol.log pertama: 30
- Konsol.log kedua: 300
- Konsol.log ketiga: 3000
Penjelasan:
- obj.sum() menggunakan konteks obj ini, jadi ia menambah 10 dan 20, mengembalikan 30.
- obj.sum.call({ x: 100, y: 200 }) menggunakan kaedah panggilan untuk menukar ini kepada objek baharu dengan nilai x dan y masing-masing 100 dan 200, mengembalikan 300.
- obj.sum.apply({ x: 1000, y: 2000 }) melakukan perkara yang sama dengan apply, mengembalikan 3000.
6. Apakah yang akan menjadi output kod berikut?
console.log(1 + '1'); // Output? console.log(1 - '1'); // Output?
Jawapan:
Output:
- Konsol.log pertama: '11'
- Konsol.log kedua: 0
Penjelasan:
- Dalam 1 '1', JavaScript melakukan paksaan jenis, menukar nombor 1 kepada rentetan, menghasilkan '11'.
- Dalam 1 - '1', JavaScript menukar rentetan '1' kepada nombor, menghasilkan 1 - 1, yang sama dengan 0.
7. Apakah output kod berikut?
console.log(typeof null); // Output?
Jawapan:
Output: Output akan bergantung pada konteks di mana foo dipanggil, tetapi jika dalam konteks global, ia akan log objek global (tetingkap dalam penyemak imbas atau global dalam Node.js).
Penjelasan: Dalam fungsi anak panah, ini terikat secara leksikal, bermakna ia menggunakan nilai ini daripada konteks sekeliling. Jika foo dipanggil dalam skop global, ini akan merujuk kepada objek global.
8. Apakah output kod berikut?
console.log(0.1 + 0.2 === 0.3); // Output?
Jawapan:
Output:
- Konsol.log pertama: 1
- Konsol.log kedua: 2
- Konsol.log ketiga: 2
- Konsol.log keempat: 1
- Konsol.log kelima: 1
Penjelasan: Fungsi createCounter mencipta penutupan yang mengekalkan pembolehubah kiraannya sendiri. Setiap kaedah (kenaikan, pengurangan, getCount) mengakses dan mengubah suai pembolehubah kiraan yang sama, memberikan gelagat yang konsisten.
9. Apakah yang akan menjadi output kod berikut?
const a = {}; const b = { key: 'b' }; const c = { key: 'c' }; a[b] = 123; // What happens here? console.log(a[b]); // Output?
Jawapan:
Output: [99, 2, 3]
Penjelasan: Dalam JavaScript, tatasusunan (seperti semua objek) ialah jenis rujukan. Apabila b ditugaskan kepada a, kedua-dua pembolehubah menghala ke tatasusunan yang sama dalam ingatan. Oleh itu, mengubah suai b mempengaruhi a.
10. Apakah output kod berikut?
const arr = [1, 2, 3]; arr[10] = 11; console.log(arr.length); // Output?
Jawapan:
Output: 3
Penjelasan: Dalam contoh ini, fungsi dalam mempunyai pembolehubah sendiri, yang membayangi pembolehubah dalam fungsi luar. Apabila console.log(a) dipanggil dalam inner, ia merujuk kepada a yang ditakrifkan dalam inner, iaitu 3.
11. Apakah output kod berikut?
let x = 1; let y = 2; const obj = { x: 10, y: 20, sum: function() { return this.x + this.y; } }; console.log(obj.sum()); // Output? console.log(obj.sum.call({ x: 100, y: 200 })); // Output? console.log(obj.sum.apply({ x: 1000, y: 2000 })); // Output?
Jawapan:
Output: { a: 1, b: 3, c: 4 }
Penjelasan: Kaedah Object.assign() menyalin nilai semua sifat terhitung daripada satu atau lebih objek sumber (obj1 dan obj2) kepada objek sasaran (objek kosong {}). Jika sifat yang sama wujud dalam berbilang objek sumber, yang terakhir diutamakan. Oleh itu, b: 3 daripada obj2 menimpa b: 2 daripada obj1.
12. Apakah yang akan menjadi output kod berikut?
console.log(1 + '1'); // Output? console.log(1 - '1'); // Output?
Jawapan:
Output: tidak ditentukan
Penjelasan: JavaScript secara automatik menyisipkan koma bertitik selepas penyataan kembali jika terdapat pemisah baris. Oleh itu, ia ditafsirkan sebagai pulangan;, yang mengembalikan tidak ditentukan. Untuk mengembalikan objek, anda harus meletakkan pendakap pembukaan { pada baris yang sama dengan kata kunci kembali.
13. Apakah yang akan menjadi output kod berikut?
console.log(typeof null); // Output?
Jawapan:
Output: tidak ditentukan
Penjelasan: Pembolehubah x di dalam fungsi foo dinaikkan tetapi tidak dimulakan sehingga penugasan var x = 2;. Oleh itu, apabila console.log(x); dilaksanakan, x tempatan diisytiharkan tetapi belum ditetapkan, jadi ia menghasilkan tidak ditentukan.
14. Apakah output kod berikut?
console.log(0.1 + 0.2 === 0.3); // Output?
Jawapan:
Output: 99
Penjelasan: Kedua-dua a dan b merujuk kepada tatasusunan yang sama dalam ingatan. Apabila anda mengubah suai b[0], anda turut mengubah suai a[0] kerana kedua-duanya merujuk tatasusunan yang sama.
15. Apakah yang akan menjadi output kod berikut?
const a = {}; const b = { key: 'b' }; const c = { key: 'c' }; a[b] = 123; // What happens here? console.log(a[b]); // Output?
Jawapan:
- Consol.log pertama: "123"
- Console.log kedua: "33"
Penjelasan:
- Dalam 1 "2" "3", JavaScript menukar 1 kepada rentetan dan menggabungkan, menghasilkan "12" dan kemudian "123".
- Dalam 1 2 "3", JavaScript mula-mula menilai 1 2, yang bersamaan dengan 3 (nombor), dan kemudian menggabungkan "3", menghasilkan "33".
16. Apakah yang akan menjadi output kod berikut?
const arr = [1, 2, 3]; arr[10] = 11; console.log(arr.length); // Output?
Jawapan:
Output: []
Penjelasan: Menetapkan sifat panjang tatasusunan kepada 0 dengan berkesan mengosongkan tatasusunan. Oleh itu, arr kini merupakan tatasusunan kosong.
17. Apakah yang akan menjadi output kod berikut?
let x = 1; let y = 2; const obj = { x: 10, y: 20, sum: function() { return this.x + this.y; } }; console.log(obj.sum()); // Output? console.log(obj.sum.call({ x: 100, y: 200 })); // Output? console.log(obj.sum.apply({ x: 1000, y: 2000 })); // Output?
Jawapan:
Output: 2
Penjelasan: Fungsi dalam, apabila dipanggil, mempunyai pembolehubah sendiri iaitu 2. Apabila anda memanggil innerFunc(), ia log 2 kerana ia merujuk kepada pembolehubah tempatan a dalam dalam.
18. Apakah yang akan menjadi output kod berikut?
console.log(1 + '1'); // Output? console.log(1 - '1'); // Output?
Jawapan:
Output: 3
Penjelasan: Kaedah c dipanggil pada obj, jadi di dalam kaedah ini merujuk kepada obj. Oleh itu, ia mengeluarkan hasil tambah obj.a dan obj.b, iaitu 3.
19. Apakah output kod berikut?
const foo = () => { console.log(this); }; foo(); // Output?
Jawapan:
- Konsol.log pertama: palsu
- Konsol.log kedua: benar
Penjelasan:
- Pernyataan pertama mengembalikan palsu kerana isu ketepatan titik terapung (0.1 0.2 bersamaan dengan 0.30000000000000004).
- Pernyataan kedua membundarkan 0.1 0.2 kepada 0.3 dengan toFixed(1) dan menukarkannya kembali kepada nombor, menghasilkan perbandingan 0.3 === 0.3, iaitu benar.
20. Apakah yang akan menjadi output kod berikut?
console.log(typeof null); // Output?
Jawapan:
Output: objek global (atau tidak ditentukan dalam mod ketat)
Penjelasan: Dalam mod tidak ketat, nilai ini di dalam fungsi yang dipanggil dalam konteks global ialah objek global (iaitu, tetingkap dalam penyemak imbas atau global dalam Node.js). Dalam mod ketat, ini tidak akan ditentukan.
21. Apakah yang akan menjadi output kod berikut?
console.log(0.1 + 0.2 === 0.3); // Output?
Jawapan:
- Konsol.log pertama: 2
- Konsol.log kedua: 1
Penjelasan:
- Object.assign(obj3, obj2) menyalin sifat daripada obj2 ke obj3, jadi obj3.a menjadi 2.
- obj3.__proto__ merujuk kepada obj1, yang mempunyai sifat a dengan nilai 1.
22. Apakah yang akan menjadi output kod berikut?
const a = {}; const b = { key: 'b' }; const c = { key: 'c' }; a[b] = 123; // What happens here? console.log(a[b]); // Output?
Jawapan:
Output: 3
Penjelasan: Dalam fungsi dalam, a merujuk kepada pembolehubah yang ditakrifkan di luar. Apabila inner dipanggil, a dinaikkan daripada 2 kepada 3 dan dilog.
23. Apakah yang akan menjadi output kod berikut?
const arr = [1, 2, 3]; arr[10] = 11; console.log(arr.length); // Output?
Jawapan:
Output: Helo, nama saya tidak ditentukan
Penjelasan: Apabila salam dipanggil tanpa konteks (iaitu, bukan sebagai kaedah orang), ini tidak terikat kepada orang. Dalam mod tidak ketat, ini lalai kepada objek global, dan memandangkan nama tidak ditakrifkan pada objek global, ia log tidak ditentukan.
24. Apakah output kod berikut?
let x = 1; let y = 2; const obj = { x: 10, y: 20, sum: function() { return this.x + this.y; } }; console.log(obj.sum()); // Output? console.log(obj.sum.call({ x: 100, y: 200 })); // Output? console.log(obj.sum.apply({ x: 1000, y: 2000 })); // Output?
Jawapan:
- Konsol.log pertama: benar
- Konsol.log kedua: benar
Penjelasan:
- Untuk console.log([1] == benar), tatasusunan [1] ditukar kepada jenis primitif, menghasilkan 1 dan 1 == benar adalah benar.
- Untuk console.log([0] == false), tatasusunan [0] bertukar kepada 0 dan 0 == false juga benar.
25. Apakah yang akan menjadi output kod berikut?
console.log(1 + '1'); // Output? console.log(1 - '1'); // Output?
Jawapan:
- Fo pertama(): 1
- Fo kedua(): 2
- Fo ketiga(): 3
Penjelasan: Fungsi foo mengekalkan penutupan sekitar pembolehubah kiraan, yang dinaikkan setiap kali foo dipanggil, mengekalkan keadaannya merentas panggilan.
26. Apakah yang akan menjadi output kod berikut?
console.log(typeof null); // Output?
Jawapan:
Output:
- Konsol pertama.log(a): 1
- Konsol.log(b): 2
- Konsol ketiga.log(c): 3
Penjelasan: a boleh diakses dalam fungsi kedua kerana penutupan. b juga boleh diakses seperti yang ditakrifkan pada mulanya. c ialah setempat kepada kedua, jadi ketiga-tiga pembolehubah dilog dengan betul.
27. Apakah yang akan menjadi output kod berikut?
console.log(0.1 + 0.2 === 0.3); // Output?
Jawapan:
Output: 3
Penjelasan: Kaedah panggilan memanggil kenaikan dengan newObj seperti ini, jadi this.num merujuk kepada newObj.num. Operasi kenaikan menukar Obj.num baharu daripada 2 kepada 3.
28. Apakah output kod berikut?
const a = {}; const b = { key: 'b' }; const c = { key: 'c' }; a[b] = 123; // What happens here? console.log(a[b]); // Output?
Jawapan:
Output:
const arr = [1, 2, 3]; arr[10] = 11; console.log(arr.length); // Output?
Penjelasan: Fungsi setTimeout semuanya merujuk pembolehubah i yang sama kerana pengangkatan. Apabila tamat masa dilaksanakan, i telah dinaikkan kepada 4, menyebabkan 4 dilog tiga kali.
29. Apakah yang akan menjadi output kod berikut?
let x = 1; let y = 2; const obj = { x: 10, y: 20, sum: function() { return this.x + this.y; } }; console.log(obj.sum()); // Output? console.log(obj.sum.call({ x: 100, y: 200 })); // Output? console.log(obj.sum.apply({ x: 1000, y: 2000 })); // Output?
Jawapan:
- tatasusunan: [1, 2, 3]
- newArray: [2, 3, 4]
Penjelasan: Fungsi peta mencipta tatasusunan baharu berdasarkan transformasi yang digunakan pada setiap item. Tatasusunan asal kekal tidak berubah, manakala tatasusunan baru mencerminkan kenaikan.
30. Apakah output kod berikut?
console.log(1 + '1'); // Output? console.log(1 - '1'); // Output?
Jawapan:
Output: Output akan bergantung pada konteks di mana foo dipanggil, tetapi jika dalam konteks global, ia akan log objek global (tetingkap dalam penyemak imbas atau global dalam Node.js).
Penjelasan: Dalam fungsi anak panah, ini terikat secara leksikal, bermakna ia menggunakan nilai ini daripada konteks sekeliling. Jika foo dipanggil dalam skop global, ini akan merujuk kepada objek global.
31. Apakah yang akan menjadi output kod berikut?
const foo = () => { console.log(this); }; foo(); // Output?
Jawapan:
Output: 42
Penjelasan: Fungsi dalam ialah fungsi anak panah, yang secara leksikal mengikatnya dengan konteks fungsi kaedah. Oleh itu, this.value merujuk kepada obj.value, iaitu 42.
32. Apakah yang akan menjadi output kod berikut?
function createCounter() { let count = 0; return { increment: function() { count++; return count; }, decrement: function() { count--; return count; }, getCount: function() { return count; } }; } const counter = createCounter(); console.log(counter.increment()); // Output? console.log(counter.increment()); // Output? console.log(counter.getCount()); // Output? console.log(counter.decrement()); // Output? console.log(counter.getCount()); // Output?
Jawapan:
Output: ReferenceError
Penjelasan: Pembolehubah x dinaikkan dalam myFunction, bermakna ia wujud dalam skop fungsi tetapi tidak dimulakan sehingga selepas console.log(x). Ini mengakibatkan ReferenceError kerana pembolehubah x diakses sebelum pengisytiharannya.
33. Apakah yang akan menjadi output kod berikut?
console.log(typeof null); // Output?
Jawapan:
Output: Hello undefined
Penjelasan: Apabila salam dipanggil tanpa konteks yang jelas, ini tidak merujuk kepada obj, jadi this.name tidak ditentukan.
34. Apakah yang akan menjadi output kod berikut?
console.log(0.1 + 0.2 === 0.3); // Output?
Jawapan:
Output: nombor
Penjelasan: Dalam JavaScript, NaN (Bukan-Nombor) dianggap sebagai jenis angka dan jenis NaN mengembalikan "nombor".
35. Apakah yang akan menjadi output kod berikut?
const a = {}; const b = { key: 'b' }; const c = { key: 'c' }; a[b] = 123; // What happens here? console.log(a[b]); // Output?
Jawapan:
Output: [1, 2, 3, 4]
Penjelasan: Kedua-dua a dan b merujuk kepada tatasusunan yang sama dalam ingatan. Apabila anda menolak 4 ke dalam b, ia turut mempengaruhi a.
Atas ialah kandungan terperinci Soalan temuduga teknikal javascript yang paling mencabar dan paling sukar dengan penyelesaian.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

Perbincangan mengenai realisasi kesan animasi tatal dan elemen Parallax dalam artikel ini akan meneroka bagaimana untuk mencapai yang serupa dengan laman web rasmi Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ... ...

Pembelajaran JavaScript tidak sukar, tetapi ia mencabar. 1) Memahami konsep asas seperti pembolehubah, jenis data, fungsi, dan sebagainya. 2) Pengaturcaraan asynchronous tuan dan melaksanakannya melalui gelung acara. 3) Gunakan operasi DOM dan berjanji untuk mengendalikan permintaan tak segerak. 4) Elakkan kesilapan biasa dan gunakan teknik debugging. 5) Mengoptimumkan prestasi dan mengikuti amalan terbaik.

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Terokai pelaksanaan fungsi seretan panel dan drop panel seperti VSCode di bahagian depan. Dalam pembangunan front-end, bagaimana untuk melaksanakan vscode seperti ...
