Stupide domande di intervista Javascript
Non sono contrario direttamente alle questioni tecniche. Penso che sia uno dei modi per farsi un'idea delle capacità tecniche del candidato. Preferisco piuttosto una discussione tecnica a un rigoroso colloquio tecnico. Ma lascia che ti spieghi una delle peggiori domande di Javascript oggi e perché.
Prima di iniziare a descrivere il mio punto, scaviamo un po' nella storia di Javascript
Correva l'anno 1995 , sviluppato da Netscape (Brendan Eich), in seguito Mozilla continuò a migliorare e sviluppare javascript. L'idea alla base di javascript era quella di creare una sorta di dinamica durante la navigazione nel mondo online. È stato utilizzato per alcuni avvisi o animazioni molto semplici. Javascript è stato progettato per avere l'aspetto di Java, ma per essere più facile da usare per i non programmatori. A quel tempo non c'era nemmeno AJAX -> Javascript non era usato per richieste e simili.
Intorno al 1997 Javascript entra a far parte degli standard ECMA.
Nel 2005 abbiamo avuto la prima versione ufficiale di AJAX -> questo è il punto in cui è iniziato lo sviluppo web di oggi. Non era più necessario aggiornare la pagina per poter ricaricare i dati. Immagina di essere improvvisamente in grado di creare una sorta di app web. Ma la domanda è: Javascript era pronto per questo? Beh, non proprio. Gli sviluppatori si sono rapidamente abituati a utilizzare cose come IIFEE :
(function() {
// Code that runs in your function
var name = 'John Doe'
}
)()
console.log(name) // error as the name is not defined in this scope
IIFEE era fondamentalmente dal punto di vista odierno una soluzione hacky per poter creare un'app complessa con più file .js . Avevamo bisogno di questo tipo di soluzione perché altrimenti avremmo avuto un conflitto nella denominazione di variabili , funzioni , ecc., poiché Javascript era un linguaggio strettamente funzionale senza classi.
VAR e il sollevamento -> Il sollevamento è un comportamento di spostamento delle dichiarazioni verso l'alto. E in javascript, la variabile può essere utilizzata prima che venga dichiarata. Questo è uno scenario valido:
myVariable = ‘is this shit possible?’
var myVariable;
console.log(myVariable); // is this shit possible?
In questo esempio la variabile myVariable è stata spostata in alto e inizializzata allo stesso tempo, questo è il motivo per cui alla riga 3 la variabile memorizza già la stringa.
E c'erano molte più cose e problemi del genere. Per non dimenticare le parti strane di javascript, che puoi trovare qui:https://hackernoon.com/the-weird-parts-of-javascript-zxo34i8
Ma qualcosa è cambiato con Javascript dalla versione es6
Se torniamo al nostro esempio di sollevamento con il nuovo approccio:
myVariable = ‘is this shit possible?’
let myVariable;
console.log(myVariable); // undefined
Javascript sta ancora mettendo la dichiarazione della variabile in alto, ma non l'inizializzazione. Quindi la nostra console scriverà una variabile indefinita invece della stringa.
Inoltre con la versione es6 abbiamo:
- Funzioni freccia
- Classi
- Moduli
- Promesse
- Generatori
- dichiarazioni let e const per le variabili
- Operatori di Spread e Rest
- Letterali modello
- Destrutturante
- E altro ancora
Quali sono allora le domande sbagliate dell'intervista?
Era necessario mostrare almeno alcuni di quegli esempi prima che potessi iniziare a trarre il mio punto.
Immagina di essere un nuovo sviluppatore e di iniziare a imparare Javascript. Non è davvero necessario che tu capisca:
- Var
- IIFEE
- Chiusure
- Promesse e loro utilizzo (ma è bene saperlo)
Ma non è assolutamente necessario verificare la conoscenza della versione precedente di Javascript. Il vecchio Javascript è stato creato per uno scopo diverso da quello utilizzato oggi.

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































