W Javie możesz użyć instanceOf
lub getClass()
na zmiennej, aby sprawdzić jej typ.
Jak znaleźć typ zmiennej w JavaScript, która nie jest silnie wpisana?
Na przykład, skąd mam wiedzieć, czy bar
jest a, Boolean
a Number
lub a String
?
function foo(bar) {
// what do I do here?
}
javascript
Tom Tucker
źródło
źródło
Odpowiedzi:
Zastosowanie
typeof
:Możesz więc:
Uważaj jednak, jeśli definiujesz te prymitywy za pomocą ich opakowań obiektów (czego nigdy nie powinieneś robić, używaj literałów, jeśli to możliwe):
Typ tablicy jest nadal
object
. Tutaj naprawdę potrzebujeszinstanceof
operatora.Aktualizacja:
Innym interesującym sposobem jest zbadanie wyników
Object.prototype.toString
:Dzięki temu nie musiałbyś rozróżniać prymitywnych wartości i obiektów.
źródło
typeof nadaje się tylko do zwracania typów „pierwotnych”, takich jak liczba, wartość logiczna, obiekt, ciąg znaków i symbole. Możesz również użyć
instanceof
do sprawdzenia, czy obiekt jest określonego typu.źródło
Używając
type
:źródło
Number(1), Boolean(true)...
Jedyne problemy występują, gdy używasznew
i tworzony jest obiekt w pudełku, używanie ich jako funkcji może być w rzeczywistości przydatne przy konwersji z innych typów.Boolean(0) === false, Number(true) === 1
null
?typeof null
jest „przedmiotem”W Javascript możesz to zrobić za pomocą funkcji typeof
źródło
By być trochę bardziej precyzyjnym ECMAScript-5.1 niż inne odpowiedzi (niektórzy mogą powiedzieć pedantyczny):
W JavaScript zmienne (i właściwości) nie mają typów: wartości mają. Ponadto istnieje tylko 6 typów wartości: Undefined, Null, Boolean, String, Number i Object. (Z technicznego punktu widzenia istnieje również 7 „typów specyfikacji”, ale nie można przechowywać wartości tych typów jako właściwości obiektów lub wartości zmiennych - są one używane tylko w samej specyfikacji, aby zdefiniować sposób działania języka. Wartości możesz jawnie manipulować tylko spośród 6 typów, które wymieniłem).
Specyfikacja używa notacji „Typ (x)”, gdy chce mówić o „typie x”. To jest tylko notacja używana w specyfikacji: nie jest to cecha języka.
Jak wyjaśniają inne odpowiedzi, w praktyce możesz chcieć wiedzieć więcej niż typ wartości - szczególnie gdy typem jest Object. Niezależnie od tego i dla kompletności, oto prosta implementacja Type (x) w języku JavaScript, tak jak jest ona używana w specyfikacji:
źródło
To frustrujące, że
typeof
jest to tak ograniczone. Oto ulepszona wersja:test próbny:
źródło
Dla wbudowanych typów JS możesz użyć:
Tutaj używamy metody „toString” z klasy „Object”, która działa inaczej niż ta sama metoda innych typów.
Przykłady:
Jeśli potrzebujesz nazwy zajęć, możesz użyć:
Przykłady:
Ale ta funkcja została dodana w ES2015 .
źródło
Oto kompletne rozwiązanie.
W przypadku eksportowalnego modułu CommonJs lub modułu RequireJS ....
Teraz możesz zaimportować ten kod Sys do pliku Sys.js. następnie możesz użyć funkcji obiektu Sys, aby dowiedzieć się, jakiego typu są obiekty JavaScript
możesz również sprawdzić, czy obiekt jest zdefiniowany, czy typ to Funkcja, czy też obiekt jest pusty ... itd.
Na przykład
źródło
W JavaScript wszystko jest przedmiotem
Aby uzyskać typ rzeczywisty , użyj tego
Mam nadzieję że to pomoże
źródło