Rumah hujung hadapan web tutorial js 5 soalan temu bual JavaScript klasik_kemahiran javascript

5 soalan temu bual JavaScript klasik_kemahiran javascript

May 16, 2016 pm 04:34 PM
javascript

1: Skop

Salin kod Kod adalah seperti berikut:

(fungsi() {
var a = b = 5;
})();
console.log(b);

Apakah yang akan dicetak ke konsol?

Jawapan

Kod di atas akan mencetak 5.

Helah kepada masalah ini ialah terdapat dua pengisytiharan pembolehubah, tetapi a diisytiharkan menggunakan kata kunci var. Menunjukkan bahawa ia adalah pembolehubah setempat bagi sesuatu fungsi. Sebaliknya, b menjadi pembolehubah global.

Helah lain dengan soalan ini ialah ia tidak menggunakan mod ketat ('gunakan ketat';). Jika mod ketat didayakan, kod akan menimbulkan ReferenceError: b tidak ditakrifkan. Ingat bahawa mod ketat memerlukan spesifikasi eksplisit untuk melaksanakan pengisytiharan pembolehubah global. Sebagai contoh, anda harus menulis:

Salin kod Kod adalah seperti berikut:

(fungsi() {
'gunakan ketat';
var a = window.b = 5;
})();

console.log(b);

2: Buat kaedah "asli"

Tentukan fungsi pengulangan untuk objek rentetan. Apabila diluluskan dalam integer n, ia mengembalikan hasil pengulangan rentetan n kali. Contohnya:

Salin kod Kod adalah seperti berikut:

console.log('hello'.repeatify(3));

harus mencetak hellohellohello.

Jawapan

Pelaksanaan yang mungkin kelihatan seperti ini:

Salin kod Kod adalah seperti berikut:

String.prototype.repeatify = String.prototype.repeatify || var str = '';
untuk (var i = 0; i < kali; i ) {
       str = ini;
}
Kembali str;
};

Soalan semasa menguji pengetahuan pembangun tentang pewarisan dan prototaip JavaScript. Ini juga mengesahkan bahawa pembangun tahu cara memanjangkan objek terbina dalam (walaupun ini tidak sepatutnya dilakukan).

Satu lagi perkara penting di sini ialah anda perlu tahu cara untuk tidak mengatasi fungsi yang mungkin sudah ditentukan. Uji bahawa definisi fungsi tidak wujud sebelum ini:

Salin kod Kod adalah seperti berikut:
String.prototype.repeatify = String.prototype.repeatify ||. fungsi(kali) {/* kod di sini */};

Teknik ini amat berguna apabila anda diminta untuk menjadikan fungsi JavaScript serasi.

3: Penyata Menaik

Laksanakan kod ini dan hasil yang akan dikeluarkan.


Salin kod Kod adalah seperti berikut:
ujian fungsi() {
console.log(a);
console.log(foo());
var a = 1;
Fungsi foo() {
Kembali 2;
}
}
10: ujian();


Jawapan

Hasil kod ini tidak ditentukan dan 2.

Sebabnya ialah pengisytiharan pembolehubah dan fungsi dibawa ke hadapan (dialihkan ke bahagian atas fungsi), tetapi pembolehubah tidak diberikan sebarang nilai. Jadi, apabila mencetak pembolehubah, ia wujud dalam fungsi (ia telah diisytiharkan), tetapi ia masih tidak ditentukan. Dalam erti kata lain, kod di atas adalah bersamaan dengan yang berikut:


Salin kod Kod adalah seperti berikut:
ujian fungsi() {
var a;
Fungsi foo() {
Kembali 2;
}
console.log(a);

console.log(foo());

a = 1;

}

ujian();


4: Bagaimana ini berfungsi dalam JavaScript

Apakah yang akan dikeluarkan oleh kod berikut? Berikan jawapan anda.

Salin kod Kod adalah seperti berikut:

var nama penuh = 'John Doe';
var obj = {
Nama penuh: 'Colin Ihrig',
; prop: {
        nama penuh: 'Aurelio De Rosa',
        getFullname: function() {
            kembalikan ini.nama penuh;
}
}
};

console.log(obj.prop.getFullname());

ujian var = obj.prop.getFullname;

console.log(test());

Jawapan

Jawapannya ialah Aurelio De Rosa dan John Doe. Sebabnya ialah dalam sesuatu fungsi, kelakuan ini bergantung pada cara fungsi JavaScript dipanggil dan ditakrifkan, bukan hanya bagaimana ia ditakrifkan.

Dalam panggilan console.log() pertama, getFullname() dipanggil sebagai fungsi objek obj.prop. Oleh itu, konteks merujuk kepada yang terakhir dan fungsi mengembalikan nama penuh objek. Sebaliknya, apabila getFullname() diberikan kepada pembolehubah ujian, konteks merujuk kepada objek global (tetingkap). Ini kerana ujian ditetapkan secara tersirat sebagai sifat objek global. Atas sebab ini, fungsi mengembalikan nama penuh tetingkap, iaitu nilai yang ditakrifkan pada baris pertama.

5: panggil() dan mohon()

Sekarang mari kita selesaikan masalah sebelumnya supaya console.log() terakhir mencetak Aurelio De Rosa.

Jawapan

Masalah ini boleh diubah dengan memaksa penggunaan call() atau apply() untuk menukar konteks fungsi. Di bawah saya akan menggunakan call(), tetapi dalam kes ini apply() akan mengeluarkan hasil yang sama:

Salin kod Kod adalah seperti berikut:

console.log(test.call(obj.prop));
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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk melaksanakan sistem pengecaman pertuturan dalam talian menggunakan WebSocket dan JavaScript Bagaimana untuk melaksanakan sistem pengecaman pertuturan dalam talian menggunakan WebSocket dan JavaScript Dec 17, 2023 pm 02:54 PM

Bagaimana untuk melaksanakan sistem pengecaman pertuturan dalam talian menggunakan WebSocket dan JavaScript

WebSocket dan JavaScript: teknologi utama untuk melaksanakan sistem pemantauan masa nyata WebSocket dan JavaScript: teknologi utama untuk melaksanakan sistem pemantauan masa nyata Dec 17, 2023 pm 05:30 PM

WebSocket dan JavaScript: teknologi utama untuk melaksanakan sistem pemantauan masa nyata

Bagaimana untuk melaksanakan sistem tempahan dalam talian menggunakan WebSocket dan JavaScript Bagaimana untuk melaksanakan sistem tempahan dalam talian menggunakan WebSocket dan JavaScript Dec 17, 2023 am 09:39 AM

Bagaimana untuk melaksanakan sistem tempahan dalam talian menggunakan WebSocket dan JavaScript

Cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata Cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata Dec 17, 2023 pm 12:09 PM

Cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Jan 05, 2024 pm 06:08 PM

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP

JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap Dec 17, 2023 pm 05:13 PM

JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap

Bagaimana untuk mendapatkan kod status HTTP dalam JavaScript dengan cara yang mudah Bagaimana untuk mendapatkan kod status HTTP dalam JavaScript dengan cara yang mudah Jan 05, 2024 pm 01:37 PM

Bagaimana untuk mendapatkan kod status HTTP dalam JavaScript dengan cara yang mudah

Bagaimana untuk menggunakan insertBefore dalam javascript Bagaimana untuk menggunakan insertBefore dalam javascript Nov 24, 2023 am 11:56 AM

Bagaimana untuk menggunakan insertBefore dalam javascript

See all articles