Quiz: Conosci il JavaScript Moderno?
Dimostra quanto ne sai davvero di JavaScript!
Conosci la differenza tra ES2015 ed ES2022?
- Dimostra le tue skill in JavaScript! 🚀
- Nessun login o registrazione richiesti. ✨
- Scelta multipla. 🤖 … Quanto potrà mai essere difficile?
Qual è il valore di result?
console.log(null ?? 100);Controlla bene la semantica dell’operatore JavaScript. La risposta più ovvia è spesso quella che avrebbe dato la vecchia sintassi, non quella prevista da questa specifica funzionalità.
L’operatore di null coalescing (??) restituisce l’operando a destra (b) se quello a sinistra (a) è null o undefined. In questo caso, a è null, quindi result è 100.
Quale sarà l’output del seguente codice?
const value = false;const defaultVal = 42;console.log(value ?? defaultVal);Controlla bene la semantica dell’operatore JavaScript. La risposta più invitante è spesso quella legata alla vecchia sintassi, non a ciò che fa questa specifica funzionalità.
L’operatore di null coalescing (??) tratta i valori falsy come false come valori validi. Poiché value è false, viene considerato un valore valido e restituito.
Qual è l’output del seguente codice?
const obj = { foo: null };const result = obj.foo?.bar;console.log(result);Controlla l’esatta semantica dell’operatore JavaScript. La risposta più ovvia è spesso ciò che avrebbe fatto la vecchia sintassi, non ciò che fa questa funzionalità.
L’operatore di optional chaining (?.) interrompe la valutazione se la parte a sinistra è null o undefined. Poiché obj.foo è null, obj.foo?.bar restituisce undefined.
Qual è l’output del seguente codice?
const a = 42n;const result = a * 2n;console.log(result);Controlla la semantica esatta degli operatori JavaScript. La risposta più ovvia è spesso ciò che avrebbe fatto la vecchia sintassi, non ciò che fa questa funzionalità.
I valori BigInt vengono creati aggiungendo n a un numero. Non è possibile mescolare BigInt con numeri regolari nelle operazioni aritmetiche. In questo caso, entrambi i valori sono BigInt, quindi la moltiplicazione funziona, restituendo 84n.
Cosa viene stampato in console?
const modulePromise = import('./myModule.js');console.log(typeof modulePromise);Controlla l’esatta semantica degli operatori JavaScript. La risposta più ovvia è spesso ciò che avrebbe fatto la vecchia sintassi, non questa specifica funzionalità.
La funzione import() restituisce una Promise che si risolve nell’oggetto del modulo. Poiché le istanze di Promise sono oggetti, typeof modulePromise restituisce 'object'.
Quale sarà il risultato del seguente codice?
const promises = [ Promise.resolve('success'), Promise.reject('error')];Promise.allSettled(promises).then(results => { console.log(results[0].status + ': ' + results[0].value);});Controlla l’esatta semantica degli operatori JavaScript. La risposta più ovvia è spesso ciò che avrebbe fatto la vecchia sintassi, non ciò che fa questa specifica funzionalità.
Promise.allSettled restituisce un array di oggetti che descrivono l’esito di ogni promise. La prima promise è fulfilled con il valore 'success', quindi l’istruzione di log stamperà fulfilled: success.
Cosa restituisce str.matchAll()?
const str = 'foo1bar2baz3';const matches = str.matchAll(/\d/g);Controlla l’esatta semantica degli operatori JavaScript. La risposta più ovvia è spesso ciò che avrebbe fatto la vecchia sintassi, non ciò che fa questa specifica funzionalità.
String.matchAll restituisce un iteratore di corrispondenze, non un array. Questo iteratore può essere utilizzato per ottenere tutti i gruppi di corrispondenza da una stringa.
Cosa rappresenta import.meta.url?
console.log(import.meta.url);Controlla la semantica esatta degli operatori JavaScript. La risposta più ovvia è spesso ciò che avrebbe fatto la vecchia sintassi, non ciò che fa questa funzionalità.
import.meta è un oggetto che contiene metadati relativi al modulo corrente. La proprietà import.meta.url rappresenta l’URL del modulo corrente, che può essere utilizzato per ottenere informazioni su dove il modulo è in esecuzione.
Qual è il valore di a dopo l’assegnazione logica?
let a = null;a ||= 10;console.log(a);Controlla l’esatta semantica degli operatori JavaScript. La risposta più allettante è spesso quella che avrebbe dato la vecchia sintassi, non quella prevista da questa funzionalità.
L’assegnazione OR logica (||=) assegna il valore a destra se il valore a sinistra è falsy (null, undefined, 0, false, ecc.). Poiché a è null, gli viene assegnato il valore 10.
Qual è il valore di b dopo l’assegnazione nullish?
let b = null;b ??= 10;console.log(b);Controlla l’esatta semantica dell’operatore JavaScript. La risposta più allettante è spesso quella che avrebbe dato la vecchia sintassi, non quella prevista da questa funzionalità.
L’assegnazione di coalescenza nullish (??=) assegna il valore a destra se il valore a sinistra è null o undefined. Poiché b è null, gli viene assegnato il valore 10.
Cosa restituisce WeakRef?
const obj = { data: 'important' };const ref = new WeakRef(obj);console.log(ref.deref());Controlla l’esatta semantica degli operatori JavaScript. La risposta più ovvia è spesso ciò che avrebbe fatto la vecchia sintassi, non ciò che fa questa specifica funzionalità.
WeakRef fornisce un riferimento debole a un oggetto, il che consente all’oggetto di essere rimosso dal garbage collector se non esistono altri riferimenti forti. Poiché obj è ancora referenziato in modo forte qui, deref() restituisce l’oggetto originale. Se il target fosse stato recuperato dal garbage collector, deref() avrebbe restituito undefined.