JavaScript typeof

JavaScript typeof

Contenido original de W3Schools


El operador typeof devuelve "objeto" para objetos, matrices y nulos. El operador typeof no devuelve "objeto" para funciones.


En JavaScript existen 5 tipos de datos diferentes que pueden contener valores:

  • string

  • number

  • boolean

  • object

  • function

Hay 6 tipos de objetos:

  • Object

  • Date

  • Array

  • String

  • Number

  • Boolean

Y 2 tipos de datos que no pueden contener valores:

  • null

  • undefined


El operador typeof

Puedes utilizar el operador typeof para encontrar el tipo de datos de una variable de JavaScript.

Ejemplo:

typeof "John"                 // Devuelve "string"
typeof 3.14                   // Devuelve "number"
typeof NaN                    // Devuelve "number"
typeof false                  // Devuelve "boolean"
typeof [1,2,3,4]              // Devuelve "object"
typeof {name:'John', age:34}  // Devuelve "object"
typeof new Date()             // Devuelve "object"
typeof function () {}         // Devuelve "function"
typeof myCar                  // Devuelve "undefined" *
typeof null                   // Devuelve "object"

Ver ejemplo

Por favor observe:

  • El tipo de datos de NaN es número

  • El tipo de datos de una matriz es object.

  • El tipo de datos de una fecha es object.

  • El tipo de datos de nulo es object.

  • El tipo de datos de una variable indefinida es indefinido *

  • El tipo de datos de una variable a la que no se le ha asignado un valor también es indefinido *

No puede usar typeof para determinar si un objeto JavaScript es una matriz (o una fecha).


Datos primitivos

Un valor de datos primitivo es un valor de datos único y simple sin propiedades ni métodos adicionales.

El operador typeof puede devolver uno de estos tipos primitivos:

  • string

  • number

  • boolean

  • undefined

Ejemplo:

typeof "John"              // Devuelve "string"
typeof 3.14                // Devuelve "number"
typeof true                // Devuelve "boolean"
typeof false               // Devuelve "boolean"
typeof x                   // Devuelve "undefined" (si x no tiene valor)

Ver ejemplo


Datos complejos

El operador typeof puede devolver uno de dos tipos complejos:

  • function

  • object

El operador typeof devuelve object para objetos, matrices y nulos.

El operador typeof no devuelve object para funciones.

Ejemplo:

typeof {name:'John', age:34} // Devuelve "object"
typeof [1,2,3,4]             // Devuelve "object" (no "array", mira la nota abajo)
typeof null                  // Devuelve "object"
typeof function myFunc(){}   // Devuelve "function"

Ver ejemplo

El operador typeof devuelve object para matrices porque en JavaScript las matrices son objetos.


El tipo de datos de typeof

El operador typeof no es una variable. Es un operador. Los operadores (+ - * / ) no tienen ningún tipo de datos.

Pero el operador typeof siempre devuelve una cadena (que contiene el tipo de operando).


La propiedad constructor

La propiedad constructor devuelve la función constructora para todas las variables de JavaScript.

Ejemplo:

"John".constructor                // Devuelve function String()  {[native code]}
(3.14).constructor                // Devuelve function Number()  {[native code]}
false.constructor                 // Devuelve function Boolean() {[native code]}
[1,2,3,4].constructor             // Devuelve function Array()   {[native code]}
{name:'John',age:34}.constructor  // Devuelve function Object()  {[native code]}
new Date().constructor            // Devuelve function Date()    {[native code]}
function () {}.constructor        // Devuelve function Function(){[native code]}

Ver ejemplo

Puedes comprobar la propiedad constructor para saber si un objeto es un Array (contiene la palabra "Array"):

Ejemplo:

function isArray(myArray) {
  return myArray.constructor.toString().indexOf("Array") > -1;
}

Ver ejemplo

O incluso más simple, puedes verificar si el objeto es una función de Array:

Ejemplo:

function isArray(myArray) {
  return myArray.constructor === Array;
}

Ver ejemplo

Puedes verificar la propiedad constructor para saber si un objeto es Date (contiene la palabra Date):

Ejemplo:

function isDate(myDate) {
  return myDate.constructor.toString().indexOf("Date") > -1;
}

Ver ejemplo

O incluso más simple, puedes verificar si el objeto es una función Date:

Ejemplo:

function isDate(myDate) {
  return myDate.constructor === Date;
}

Ver ejemplo


Indefinido

En JavaScript, una variable sin valor tiene el valor undefined. El tipo tampoco está definido.

Ejemplo:

let car;    // Valor es indefinido, tipo es indefinido

Ver ejemplo

Cualquier variable se puede vaciar estableciendo el valor en undefined. El tipo también será undefined.

Ejemplo:

car = undefined;    // Valor es indefinido, tipo es indefinido

Ver ejemplo


Valores vacíos

Un valor vacío no tiene nada que ver con undefined.

Una cadena vacía tiene tanto un valor legal como un tipo.

Ejemplo:

let car = "";    // El valor es "", el tipo es "string"

Ver ejemplo


Nulo

En JavaScript, null es "nada". Se supone que es algo que no existe.

Desafortunadamente, en JavaScript, el tipo de datos null es un objeto.

Puedes considerar un error en JavaScript que typeof null sea un objeto. Debería ser null.

Puedes vaciar un objeto configurándolo en null:

Ejemplo:

let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = null;    // Ahora el valor es null, pero el tipo todavía es un object

Ver ejemplo

También puedes vaciar un objeto configurándolo como undefined:

Ejemplo:

let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = undefined;   // Ahora ambos, valor y tipo son undefined

Ver ejemplo


Diferencia entre indefinido y nulo

undefined y null son iguales en valor pero diferentes en tipo:

Ejemplo:

typeof undefined           // undefined
typeof null                // object

null === undefined         // false
null == undefined          // true

Ver ejemplo


El operador instanceof

El operador instanceof devuelve verdadero si un objeto es una instancia del objeto especificado:

Ejemplo:

const cars = ["Saab", "Volvo", "BMW"];

(cars instanceof Array);
(cars instanceof Object);
(cars instanceof String);
(cars instanceof Number);

Ver ejemplo


El operador void

El operador void evalúa una expresión y devuelve indefinido. Este operador se usa a menudo para obtener el valor primitivo indefinido, usando "void(0)" (útil cuando se evalúa una expresión sin usar el valor de retorno).

Ejemplo:

<a href="javascript:void(0);">
  Useless link
</a>

<a href="javascript:void(document.body.style.backgroundColor='red');">
  Haz clic para cambiar el color de fondo del cuerpo a rojo
</a>

Ver ejemplo


W3Schools es el sitio de desarrolladores web más grande del mundo.

Did you find this article valuable?

Support Santos Romero by becoming a sponsor. Any amount is appreciated!