Diversity w polskim IT
Harsha Vardhan
Harsha VardhanSenior Software Engineer @ SuperOps.ai

5 rzeczy, których nie wiesz o JavaScript

Poznaj 5 cech JavaScriptu, których nie da się dostrzec na pierwszy rzut oka.
12.04.20223 min
5 rzeczy, których nie wiesz o JavaScript

JavaScript to piękny język. Ma on swoje tajemnice, o których wiele osób nie wie, a które potrafią zaskoczyć. Oto lista kilku takich sekretów.

1. NaN to liczba

Czy wiedzieliście, że NaN to liczba? NaN, czyli Not a Number, gdy rozwiniemy skrót, to tak naprawdę liczba. 

console.log(typeof NaN); //number


Co więcej, NaN nie jest nawet sobie równe i nie równa się żadnemu innemu obiektowi. Jeśli musicie sprawdzić, czy cokolwiek występuje jako NaN, to musicie użyć isNaN().

NaN === NaN // false

isNaN(NaN) //true

2. Operator void

W JavaScript występuje operator void. Zastanawiacie się pewnie, co taki operator może w JS robić. A więc bierze jakiekolwiek wyrażenie, które po nim występuje, uruchamia je i zawsze zwraca undefined. Brzmi bezużytecznie? Chyba brzmi, a przynajmniej tak mi się wydawało. 

void {}; // undefined

void "any text at all"; // undefined

void (() => {}); // undefined

let a = 0;

void a; // undefined


Czy potrzebujemy w ogóle czegoś takiego? O dziwo jak najbardziej. Używa się go do definiowania undefined. W sumie to nawet nie wiedziałem, że undefined można zdefiniować.

(() => {

const undefined = "foo";

console.log(undefined, typeof undefined); // "foo", "string"

console.log(void 0, typeof void 0); // undefined, "undefined"

})();


Ponieważ undefined nie jest słowem kluczowym, to można go użyć jako nazwy zmiennej, aby nadpisać wartość globalną w zakresie. 

3. IIFE, czyli Immediately Invoked Function Expression

To chyba nie jest aż taka tajemnica. IIFE to tak naprawdę funkcja, którą da się wywołać zaraz po swojej definicji. IIFE jest zazwyczaj opakowywane w okrągłe nawiasy, po których następują kolejne okrągłe nawiasy - ma to na celu wywołanie zdefiniowanej funkcji.

() => {

// …

})();


Gdy funkcja posiada zwracany typ lub gdy jest przypisana do zmiennej, to nie musimy tego robić.

void function () {

// …

}();

const result = function () {

// …

}();

4. Operator in

Jednym z rzadziej używanych operatorów w JS jest operator in. Jego celem jest sprawdzenie, czy dany obiekt zawiera odpowiednią właściwość. 

let obj = { x: 1, y: 2, z: 3 };

"x" in obj; // true

"a" in obj; // false


Ale po co nam operator in, kiedy możemy to sprawdzić przy pomoc object[property]? Bo daje nam wygodę sprawdzania, czy jakakolwiek właściwość jest obecna, nawet jeśli posiada ona jakiekolwiek wartości false. W takich przypadkach zazwyczaj korzystamy z:

typeof obj[prop] === "undefined"


Zamiast powyższego możemy też użyć:

"prop" in obj

5. Null jest obiektem

Wszyscy zakładaliśmy, że null informuje nas o tym, iż nie ma obiektu. Spróbujmy jednak sprawdzić, jaki null ma typ:

console.log(typeof null); //object


No ale null nie jest też instancją obiektu, ponieważ wskazuje na brak jakiejkolwiek wartości. A zatem:

console.log(null instanceof Object); // false

Podsumowanie

Powyższe to tylko kilka koncepcji JS, o których nie miałem zielonego pojęcia. Mam nadzieję, że się Wam przydadzą. Dajcie znać w komentarzach, czy o nich wiedzieliście. A może znacie jeszcze inne? 


Oryginał tekstu w języku angielskim możesz przeczytać tutaj.

<p>Loading...</p>