Głupie pytania do wywiadu w JavaScript
Nie jestem bezpośrednio przeciwny kwestiom technicznym. Myślę, że jest to jeden ze sposobów na poznanie umiejętności technicznych kandydata. Wolę raczej dyskusję techniczną od ścisłego wywiadu technicznego. Ale pozwólcie, że wyjaśnię jedno z najgorszych pytań dotyczących JavaScript dzisiaj i dlaczego.
Zanim zacznę opisywać mój punkt widzenia, zagłębimy się trochę w historię Javascript
Był rok 1995 , opracowany przez Netscape (Brendan Eich), później Mozilla kontynuowała ulepszanie i rozwijanie javascript. Ideą javascript było stworzenie pewnego rodzaju dynamiki podczas przeglądania świata online. Był używany do niektórych alertów lub bardzo podstawowych animacji. JavaScript został zaprojektowany tak, aby wyglądał i działał jak Java, ale był łatwiejszy w obsłudze dla osób niebędących programistami. W tamtym czasie nie było nawet AJAX -> Javascript nie był używany do żądań i tym podobnych.
Około roku 1997 Javascript stał się częścią standardów ECMA.
W 2005 roku mieliśmy pierwszą oficjalną wersję AJAX -> to jest punkt, w którym zaczęło się dzisiejsze tworzenie stron internetowych. Odświeżanie strony nie było już konieczne, aby móc ponownie załadować dane. Wyobraź sobie, że nagle udało Ci się stworzyć jakąś aplikację internetową. Ale pytanie brzmi: czy Javascript był na to gotowy? No nie bardzo. Deweloperzy szybko przyzwyczaili się do używania rzeczy takich jak 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 był w zasadzie z dzisiejszego punktu widzenia hackerskim rozwiązaniem, aby móc stworzyć złożoną aplikację z większą liczbą plików .js . Potrzebowaliśmy tego rodzaju rozwiązania, ponieważ w przeciwnym razie mielibyśmy konflikt w nazewnictwie zmiennych , funkcji itp ., ponieważ Javascript był językiem ściśle funkcjonalnym bez klas.
VAR i Hoisting -> Hoisting to zachowanie polegające na przenoszeniu deklaracji na górę. A w javascript zmiennej można użyć przed jej zadeklarowaniem. To jest poprawny scenariusz:
myVariable = ‘is this shit possible?’
var myVariable;
console.log(myVariable); // is this shit possible?
W tym przykładzie zmienna myVariable została przeniesiona na górę i jednocześnie zainicjowana, dlatego w linii 3 zmienna już przechowuje łańcuch.
A takich spraw i problemów było znacznie więcej. Nie można zapomnieć o dziwnych częściach javascript, które można znaleźć tutaj:https://hackernoon.com/the-weird-parts-of-javascript-zxo34i8
Ale coś się zmieniło w JavaScript od wersji es6
Jeśli wrócimy do naszego przykładu podnoszenia z nowym podejściem:
myVariable = ‘is this shit possible?’
let myVariable;
console.log(myVariable); // undefined
JavaScript nadal umieszcza deklarację zmiennej na górze, ale nie inicjalizację. Więc nasza konsola zapisze niezdefiniowaną zmienną zamiast łańcucha.
Dodatkowo z wersją es6 mamy:
- Funkcje strzałek
- Klasy
- Moduły
- Obietnice
- Generatory
- let i const deklaracje dla zmiennych
- Operatory Spread i Rest
- Literały szablonowe
- Destrukcja
- I wiele więcej
Jakie są zatem niewłaściwe pytania na rozmowie kwalifikacyjnej?
Konieczne było pokazanie przynajmniej niektórych z tych przykładów, zanim mogłem zacząć rysować swój punkt widzenia.
Wyobraź sobie, że jesteś nowym programistą i zaczynasz uczyć się JavaScript. Naprawdę nie musisz rozumieć:
- Var
- IIFEE
- Domknięcia
- Obietnice i ich wykorzystanie (ale warto o tym wiedzieć)
Ale absolutnie nie jest konieczne sprawdzanie znajomości starszej wersji Javascript. Stary Javascript został zbudowany w innym celu niż jest używany dzisiaj.

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































