5 soalan temu bual JavaScript klasik_kemahiran javascript
May 16, 2016 pm 04:34 PM1: Skop
(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:
(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:
console.log('hello'.repeatify(3));
harus mencetak hellohellohello.
Jawapan
Pelaksanaan yang mungkin kelihatan seperti ini:
String.prototype.repeatify = String.prototype.repeatify || var str = '';
untuk (var i = 0; i < kali; i ) {
str = ini;
}
Kembali str;
};
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:
3: Penyata Menaik
Laksanakan kod ini dan hasil yang akan dikeluarkan.
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:
var a;
Fungsi foo() {
Kembali 2;
}
console.log(a);
console.log(foo());
}
4: Bagaimana ini berfungsi dalam JavaScript
Apakah yang akan dikeluarkan oleh kod berikut? Berikan jawapan anda.
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:
console.log(test.call(obj.prop));

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel 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

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

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

Bagaimana untuk melaksanakan sistem tempahan dalam talian menggunakan WebSocket dan JavaScript

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

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP

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 menggunakan insertBefore dalam javascript
