Hai, ini adalah bagian terakhir dari analisis pertanyaan dari stand kami.
Bereaksi pertanyaan di sini .
Analisis empat putaran pertama di sini .

Di sini, pertanyaan tentang topik praktis tidak dikelompokkan, kami menganalisis semuanya satu per satu.
Ayo pergi:
Apa hasilnya?
let i = 0; let a = 1; for (; a >= 0; i++) { a -= 0.1; } console.log(i); a) 1 b) 11 c) d) 10
Jawab + parsingb) 11
Semuanya cukup sederhana di sini. Ini lebih merupakan masalah perhatian. Siklus akan dieksekusi 11 kali, karena kami tidak ketat
lebih besar dari >
, dan lebih besar dari atau sama dengan >=
.
Apa hasilnya?
{} + []; a) 0 b) null c) '[object Object]' d) NaN
Jawab + parsinga) 0
Kuncinya di sini adalah {}
akan ditafsirkan bukan sebagai objek, tetapi sebagai blok kode yang kosong. Oleh karena itu, ekspresi dikonversi ke +[]
, dan ini adalah 0
, karena +
sebelum nilai mengubahnya menjadi angka. Saya ingin mencatat bahwa jika kode ini ditulis sebagai console.log({} + []);
, maka itu akan menjadi [object Object]
, karena di sini {}
akan ditafsirkan sebagai objek.
Apa hasilnya?
[] + {};
a) 0
b) nol
c) '[Objek objek]'
d) NaN
Jawab + parsingc) '[Objek objek]'
Di sini, kedua operan, menurut aturan, direduksi menjadi string dalam array kosong - ini adalah string kosong, dan di [object Object]
Apa yang akan dihasilkan kode ini?
let response = { data: '', errors: { code: 403 } }; console.log(typeof response.data.link); a) undefined b) object c) string d) function
Jawab + parsingd) fungsi
Prototipe string memiliki metode tautan , sehingga jawaban yang benar adalah function
Apa yang akan dihasilkan kode ini?
const button = document.querySelector('button'); button.addEventListener('click', () => { console.log('FUS'); }); button.addEventListener('click', () => Promise.resolve('RO').then((x) => console.log(x))); button.addEventListener('click', () => { console.log('DAH!'); }); button.click(); a) FUS RO DAH! b) FUS DAH! RO c) RO FUS DAH! d) DAH! RO FUS
Jawab + parsingb) FUS DAH! RO
Di sini kita memicu click
terprogram, dan masuk ke tumpukan panggilan, penangan pertama dipicu - kita FUS
, kita sampai ke yang kedua - kita menambahkan RO
ke antrian, karena click
diam di tumpukan - jangan panggil janji. Kami masuk ke handler berikutnya - output DAH!
. click
berhasil, antrian kosong, janji dipicu.
Apa yang akan ditampilkan kode ini ketika tombol diklik?
const button = document.querySelector('button'); button.addEventListener('click', () => { console.log('FUS'); }); button.addEventListener('click', () => Promise.resolve('RO').then((x) => console.log(x))); button.addEventListener('click', () => { console.log('DAH!'); }); button.click(); a) FUS RO DAH! b) FUS DAH! RO c) RO FUS DAH! d) DAH! RO FUS
Jawab + parsinga) FUS RO DAH!
Di sini pengguna mengklik tombol, sehingga tidak ada click
pada tumpukan, dan di penangan kedua, janji akan segera bekerja.
Apa yang akan dihasilkan kode ini?
console.log(typeof Function````); a) TypeError b) SyntaxError c) 'function' d) 'undefined'
Jawab + parsingd) 'tidak terdefinisi'
Saat menggunakan literal templat setelah nama fungsi, itu disebut dengan array, di mana ada nilai yang lewat dan array dengan nilai raw
. Function
, sama seperti new Function
- function constructor baru. Ketika meneruskan string kosong ke dalamnya, kita mendapatkan fungsi dari form (){}
, masing-masing, dengan argumen apa pun yang kita sebut, itu akan kembali undefined
, di sini ia disebut dengan array - ['', raw: ['']]
. Ini kira-kira sama dengan Function('')('')
Apa yang akan dihasilkan kode ini?
function f(a, b, c) { 'use strict'; return f.length; } console.log(f(100, 2)); a) undefined b) 2 c) 3 d)
Jawab + parsingc) 3
Deskripsi lengkap dengan MDN :
Properti length adalah properti dari objek fungsi dan menunjukkan berapa banyak argumen fungsi yang diharapkan, yaitu, jumlah parameter formal. Jumlah ini tidak termasuk parameter residual.
Apa hasilnya?
const dict = {}; dict[[1]] = 2; dict[dict] = 3; dict[1 / 0] = 4; a) {'1': 2, '[object Object]': 3, 'Infinity': 4} b) Assignment to constant variable c) {'[1]': 2, 'dict': 3, '1/0': 4} d) {'1': 4, '[object Object]': 3}
Jawab + parsinga) {'1': 2, '[objek objek]': 3, 'Infinity': 4}
Assignment to constant variable
Kesalahan Assignment to constant variable
tidak akan ada di sini karena const
tidak mengizinkan mengubah tautan, tetapi Anda dapat memodifikasi objek. Semua kunci objek harus berupa string, jadi toString
dipanggil untuk masing-masingnya. Array dilemparkan ke 1
, objek ke [object Object]
, dan ketika dibagi dengan nol, Infinity
diperoleh.
Apa yang akan dihasilkan kode ini?
console.log(!![] > [], ![] == []); a) false false b) false true c) true true d) true false
Jawab + parsingc) benar benar
Perbandingan > >= <= <
- menyebabkan perbandingan aritmatika, pertama-tama kita melemparkan array ke nilai Boolean dan menjadi true, dan kemudian kita mendapatkan perbandingan 1> 0, yang jelas memberikan true. Pada bagian kedua dari pertanyaan, kita membuang array ke false
, lalu false
ke 0
, dan array dilemparkan ke primitif, kita mendapatkan string kosong ''
, dan mereka sama.
Ini menyimpulkan analisis kami, terima kasih atas perhatian Anda!