Domande e risposte: JavaScript e TypeScript

Ripassa JavaScript e TypeScript: ecco una selezione di domande di ogni livello, con risposta e spiegazione. Per metterti alla prova senza vedere le risposte, gioca ai quiz.

Gioca ai quiz JavaScript e TypeScript

Facile

In quale anno Brendan Eich ha creato JavaScript presso Netscape?

Risposta : 1995

Brendan Eich ha ideato JavaScript nel 1995 presso Netscape, in circa dieci giorni. Il linguaggio non ha alcun legame di parentela con Java, nonostante il nome.

Quale parola chiave dichiara una variabile con ambito di blocco, il cui valore può essere cambiato?

Risposta : let

let dichiara una variabile con ambito di blocco, riassegnabile. const impedisce la riassegnazione, e var ha un ambito di funzione.

Che cosa restituisce typeof applicato alla stringa 'abc' in JavaScript?

Risposta : string

L'operatore typeof restituisce una stringa che descrive il tipo del valore: per una stringa di caratteri il risultato è string.

Che cosa restituisce l'espressione 0 == '0' in JavaScript?

Risposta : true

L'operatore == confronta dopo una conversione: '0' diventa il numero 0. Con === anche i tipi devono essere identici, e il risultato sarebbe false.

Quale proprietà fornisce il numero di elementi di un array in JavaScript?

Risposta : length

La proprietà length fornisce il numero di elementi di un array: [1, 2, 3].length vale 3.

Quale metodo restituisce il primo elemento che corrisponde a un selettore CSS, come 'div.carte'?

Risposta : querySelector

querySelector accetta qualsiasi selettore CSS e restituisce il primo elemento trovato, oppure null se nessuno corrisponde.

Qual è il ruolo di addEventListener nel browser?

Risposta : Registrare una funzione richiamata quando si verifica un evento

addEventListener associa una funzione a un elemento per un tipo di evento, come un clic. La funzione viene richiamata ogni volta che l'evento si verifica.

Quale funzione trasforma un oggetto JavaScript in testo in formato JSON?

Risposta : JSON.stringify

JSON.stringify trasforma un valore JavaScript in testo JSON; JSON.parse fa l'operazione inversa.

Medio

Quale versione di ECMAScript ha introdotto let, const, le funzioni freccia e le classi?

Risposta : ES6 (ECMAScript 2015)

ES6, pubblicato nel 2015, ha introdotto let e const, le funzioni freccia e le classi.

Che cosa mostra console.log(x) posto prima della riga var x = 5 nello stesso script?

Risposta : undefined

Con var la dichiarazione viene sollevata (hoisting), ma non l'assegnazione: x esiste già, con valore undefined. Con let, lo stesso accesso solleva un ReferenceError.

In una funzione freccia, a che cosa corrisponde this?

Risposta : Quello della funzione che la contiene, definito nel punto in cui la funzione è scritta

Una funzione freccia non ha un this proprio: riprende quello del punto in cui è definita.

Che cosa si chiama closure in JavaScript?

Risposta : Una funzione che conserva l'accesso alle variabili dell'ambito in cui è stata creata

Una closure conserva l'accesso alle variabili della funzione che la contiene, anche dopo che quest'ultima ha terminato la sua esecuzione.

Quale valore JavaScript indica che una variabile è stata dichiarata ma non ha ricevuto alcun valore?

Risposta : undefined

undefined è il valore di una variabile dichiarata senza assegnazione. null rappresenta un'assenza di valore scelta esplicitamente dal programmatore.

Che cosa restituisce [1, 2, 3, 4].filter(n => n % 2 === 0)?

Risposta : [2, 4]

filter conserva gli elementi per cui la funzione restituisce true: qui i numeri pari.

Che cosa restituisce Promise.resolve(5).then(x => x * 2)?

Risposta : Una promise che sarà risolta con il valore 10

Il valore risolto del then è il risultato della funzione di callback: qui 5 moltiplicato per 2, cioè 10.

Che cosa restituisce una funzione marcata async in JavaScript?

Risposta : Sempre una promise

Una funzione async restituisce sempre una promise: il valore di return viene incapsulato, e un'eccezione diventa un rifiuto.

Difficile

In quale anno Microsoft ha pubblicato la prima versione di TypeScript?

Risposta : 2012

TypeScript, guidato da Anders Hejlsberg, è pubblicato da Microsoft nell'ottobre 2012: è un superset tipizzato di JavaScript.

Quale differenza separa any e unknown in TypeScript?

Risposta : Un valore unknown va verificato prima dell'uso, mentre any disattiva questo controllo

any disattiva il controllo dei tipi sul valore. unknown obbliga a restringere il tipo prima di qualsiasi uso, il che protegge il codice.

Che cosa fa il parametro di tipo T in function identite<T>(x: T): T?

Risposta : Conserva il tipo dell'argomento ricevuto e lo restituisce così com'è

T è una variabile di tipo: TypeScript la deduce dall'argomento a ogni chiamata, il che conserva il tipo preciso del risultato.

In TypeScript, su che cosa si basa la compatibilità tra due tipi di oggetto?

Risposta : In base alla struttura: conta ciò che l'oggetto possiede, non il nome dichiarato

TypeScript è strutturale: un oggetto è compatibile se possiede le proprietà attese con i tipi giusti, anche senza una dichiarazione esplicita.

Tra due task, quale coda l'event loop svuota interamente prima di passare alla successiva?

Risposta : La coda delle microtask, come le promise

I callback delle promise formano la coda delle microtask, che l'event loop svuota interamente tra due task. Le macrotask, come setTimeout, vengono trattate una alla volta.

Quando una proprietà di un oggetto JavaScript è assente, dove il motore la cerca poi?

Risposta : Nel prototipo dell'oggetto, poi nella catena dei prototipi

La ricerca risale la catena dei prototipi. Se la proprietà non esiste da nessuna parte, il valore letto è undefined, senza errore.

Quale opzione di tsconfig.json attiva in una sola volta tutti i controlli stretti?

Risposta : strict

strict: true attiva in particolare strictNullChecks e noImplicitAny. Ciascuna di queste opzioni può essere impostata anche separatamente.

Quale strumento installa le dipendenze elencate nel file package.json di un progetto Node.js?

Risposta : npm

npm legge il file package.json e installa le dipendenze nella cartella node_modules.

Temi simili

Gioca ai quiz JavaScript e TypeScript