Adakah anda tahu JavaScript? Artikel berikut akan berkongsi dengan anda 12 soalan temuduga JavaScript Cuba 12 soalan temuduga ini dan lihat jika anda boleh menjawab semuanya dengan betul.
JavaScript ialah teknologi asas yang harus dikuasai oleh setiap pembangun bahagian hadapan, tetapi sering kali, anda mungkin tidak memahami JavaScript sepenuhnya.
Terdapat dua cara yang sangat mudah untuk menguji tahap teknikal seseorang, melihat kod yang dia tulis atau biarkan dia melihat kod yang ditulis oleh orang lain.
Saya telah meringkaskan beberapa soalan kod yang boleh menguji pemahaman anda tentang JavaScript Anda boleh mencubanya dan lihat jika anda boleh menjawab semuanya dengan betul. Jika anda menjawab semua soalan dengan betul, anda akan dianggap mengetahui beberapa JavaScript.
Soalan 1
Cuba teka outputnya:
const person = { name: '代码与野兽' } Object.defineProperty(person, 'age', { value: 18 }) console.log(person.age) console.log(Object.keys(person))
Output:
18 ['name']
Analisis:
Ramai orang cenderung tersilap output kedua kerana sifat yang ditakrifkan menggunakan defineProperty tidak boleh dikira secara lalai.
Soalan kedua
Cuba teka outputnya:
const name = '代码与野兽' age = 18 console.log(delete name) console.log(delete age) console.log(typeof age)
Output:
false true "undefined"
Analisis:
Salah pertama adalah kerana padam hanya boleh memadamkan atribut pada objek, dan nama bukan atribut, jadi pemadaman gagal.
Yang kedua benar adalah kerana kami tidak menggunakan sebarang pengisytiharan untuk mencipta pembolehubah Ia akan dianggap sebagai pembolehubah global dan dipasang pada objek tetingkap, yang bersamaan dengan memadamkan window.age, jadi pemadaman berjaya.
Yang ketiga tidak ditentukan adalah kerana umur telah dipadamkan.
Soalan 3
Cuba teka outputnya:
let person = { name: '代码与野兽' } const members = [person] person = null console.log(members)
Output:
[{ name: "代码与野兽" }]
Analisis:
Ramai orang akan berfikir bahawa hasil output sepatutnya [null], tetapi kami hanya menetapkan rujukan baharu kepada pembolehubah orang, dan rujukan sebelumnya masih dalam ahli.
Ringkasnya, { name: 'Code and Beast' } Objek ini wujud dalam ruang ingatan tertentu, dengan mengandaikan alamatnya ialah X201. Logiknya lebih kurang seperti berikut:
let person = X201 const members = [X201] persion = null
Soalan 4
Cubalah teka outputnya:
function SuperHero() { this.make = '代码与野兽' return { make: '野兽与代码'} } const mySuperhero = new SuperHero() console.log(mySuperhero)
Output:
{ make: "野兽与代码" }
Parsing:
Jika pembina akhirnya mengembalikan objek, semua sifat yang ditetapkan sebelum ini akan menjadi tidak sah.
Soalan 5
Cuba teka outputnya:
const name = '代码与野兽' console.log(name.padStart(14)) console.log(name.padStart(2))
Output:
" 代码与野兽" "代码与野兽"
Penghuraian:
Kaedah padStart boleh mengisi ruang pada permulaan rentetan.
Parameter ialah jumlah panjang rentetan baharu Jika panjang ini lebih pendek daripada panjang rentetan asal, ia tidak akan berlapik.
Soalan 6
Cuba teka outputnya:
console.log(parseInt("7")) console.log(parseInt("7*6")) console.log(parseInt("7Din"))
Output:
7 7 7
Penghuraian:
Jika parameter parseInt ialah gabungan rentetan dan nombor, maka ia akan menyemak dari awal sehingga ia mencecah kedudukan di mana jenis data salah, jika ia sebelum kedudukan di mana jenis data salah adalah nombor yang sah, ia akan mengembalikan nombor tersebut.
Soalan 7
Cuba teka outputnya:
[1, 2, 3, 4].reduce((x, y) => console.log(x, y))
Output:
1 2 undefined 3 undefined 4
Analisis:
Jika kita tidak melepasi nilai awal untuk mengurangkan, maka x akan menjadi nilai pertama tatasusunan dan y akan menjadi nilai kedua tatasusunan.
Soalan 8
Cuba teka outputnya:
function getUserInfo(one, two, three) { console.log(one) console.log(two) console.log(three) } const superHero = '代码与野兽' const age = 1000 getUserInfo`${superHero} 是 ${age} 岁` getUserInfo`hello`
Output:
["", " 是 ", " 岁"] "代码与野兽" 1000 ["hello"] undefined undefined
Analisis:
Apabila kami menggunakan sintaks rentetan templat untuk memanggil fungsi, parameter pertama sentiasa tatasusunan rentetan berpecah. Parameter selebihnya ialah nilai ungkapan templat.
Soalan 9
Cuba teka outputnya:
(() => { let x, y; try { throw new Error() } catch (x) { (x = 1), (y = 2); console.log(x) } console.log(x) console.log(y) })()
Output:
1 undefined 2
Analisis:
Apabila mengakses x dalam tangkapan, parameter diakses, bukan pembolehubah luaran x.
Soalan 10
Cuba teka outputnya:
class Clazz {} console.log(typeof Clazz)
Output:
"function"
解析:
在 JavaScript 中,Class 也是 function。
第十一题
尝试推测它的输出:
const arr = [7, 1, 4, 3, 2]; for (const elem of arr) { setTimeout(() => console.log(elem), elem); }
输出:
1 2 3 4 7
第十二题
尝试推测它的输出:
const foo = { bar: 1 }; with(foo) { var bar = 2 }; console.log(foo.bar);
输出:
2
解析:
with 的对象会作为 global 对象。在 with 使用 var 等价于 window.[xxx]。而这时 foo 就是那个 window。
【相关推荐:javascript学习教程】
Atas ialah kandungan terperinci Kongsi 12 soalan temu bual untuk mengetahui sama ada anda memahami JavaScript!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!