Buscar..
Sintaxis
- expresión vacía // Evalúa la expresión y descarta el valor de retorno
- + expresión; // Intenta convertir la expresión a un número
- eliminar object.property; // Eliminar propiedad del objeto
- eliminar objeto ["propiedad"]; // Eliminar propiedad del objeto
- typeof operando; // Devuelve el tipo de operando
- ~ expresión; // Realizar la operación NOT en cada bit de expresión
- !expresión; // Realizar negación lógica en expresión
- -expresión; // Negar expresión después de intentar la conversión a número
El operador unario plus (+)
El plus unario ( +
) precede a su operando y evalúa a su operando. Intenta convertir el operando en un número, si no lo está ya.
Sintaxis:
+expression
Devoluciones:
- un
Number
.
Descripción
El operador unario plus ( +
) es el método más rápido (y preferido) de convertir algo en un número.
Se puede convertir:
- Representaciones de cadenas de enteros (decimal o hexadecimal) y flotantes.
- booleanos:
true
,false
. -
null
Los valores que no se pueden convertir se evaluarán en NaN
.
Ejemplos:
+42 // 42
+"42" // 42
+true // 1
+false // 0
+null // 0
+undefined // NaN
+NaN // NaN
+"foo" // NaN
+{} // NaN
+function(){} // NaN
Tenga en cuenta que intentar convertir una matriz puede generar valores de retorno inesperados.
En el fondo, las matrices se convierten primero a sus representaciones de cadena:
[].toString() === '';
[1].toString() === '1';
[1, 2].toString() === '1,2';
El operador intenta convertir esas cadenas en números:
+[] // 0 ( === +'' )
+[1] // 1 ( === +'1' )
+[1, 2] // NaN ( === +'1,2' )
El operador de borrado
El delete
operador elimina una propiedad de un objeto.
Sintaxis:
delete object.property
delete object['property']
Devoluciones:
Si la eliminación es exitosa, o la propiedad no existe:
-
true
Si la propiedad a eliminar es una propiedad no configurable propia (no se puede eliminar):
-
false
en modo no estricto. - Lanza un error en modo estricto.
Descripción
El operador de delete
no libera directamente la memoria. Puede liberar memoria de forma indirecta si la operación significa que todas las referencias a la propiedad han desaparecido.
delete
trabajos en las propiedades de un objeto. Si existe una propiedad con el mismo nombre en la cadena del prototipo del objeto, la propiedad se heredará del prototipo.
delete
no funciona en variables o nombres de funciones.
Ejemplos:
// Deleting a property
foo = 1; // a global variable is a property of `window`: `window.foo`
delete foo; // true
console.log(foo); // Uncaught ReferenceError: foo is not defined
// Deleting a variable
var foo = 1;
delete foo; // false
console.log(foo); // 1 (Not deleted)
// Deleting a function
function foo(){ };
delete foo; // false
console.log(foo); // function foo(){ } (Not deleted)
// Deleting a property
var foo = { bar: "42" };
delete foo.bar; // true
console.log(foo); // Object { } (Deleted bar)
// Deleting a property that does not exist
var foo = { };
delete foo.bar; // true
console.log(foo); // Object { } (No errors, nothing deleted)
// Deleting a non-configurable property of a predefined object
delete Math.PI; // false ()
console.log(Math.PI); // 3.141592653589793 (Not deleted)
El operador de typeof
El operador typeof
devuelve el tipo de datos del operando no evaluado como una cadena.
Sintaxis:
typeof operand
Devoluciones:
Estos son los valores de retorno posibles de typeof
:
Tipo | Valor de retorno |
---|---|
Undefined | "undefined" |
Null | "object" |
Boolean | "boolean" |
Number | "number" |
String | "string" |
Symbol (ES6) | "symbol" |
Objeto Function | "function" |
document.all | "undefined" |
Objeto host (proporcionado por el entorno JS) | Dependiente de la implementación |
Cualquier otro objeto | "object" |
El comportamiento inusual de document.all
con el operador typeof
es de su uso anterior para detectar navegadores heredados. Para obtener más información, consulte ¿Por qué se define document.all pero typeof document.all devuelve "undefined"?
Ejemplos:
// returns 'number'
typeof 3.14;
typeof Infinity;
typeof NaN; // "Not-a-Number" is a "number"
// returns 'string'
typeof "";
typeof "bla";
typeof (typeof 1); // typeof always returns a string
// returns 'boolean'
typeof true;
typeof false;
// returns 'undefined'
typeof undefined;
typeof declaredButUndefinedVariable;
typeof undeclaredVariable;
typeof void 0;
typeof document.all // see above
// returns 'function'
typeof function(){};
typeof class C {};
typeof Math.sin;
// returns 'object'
typeof { /*<...>*/ };
typeof null;
typeof /regex/; // This is also considered an object
typeof [1, 2, 4]; // use Array.isArray or Object.prototype.toString.call.
typeof new Date();
typeof new RegExp();
typeof new Boolean(true); // Don't use!
typeof new Number(1); // Don't use!
typeof new String("abc"); // Don't use!
// returns 'symbol'
typeof Symbol();
typeof Symbol.iterator;
El operador del vacío.
El operador void
evalúa la expresión dada y luego devuelve undefined
.
Sintaxis:
void expression
Devoluciones:
-
undefined
Descripción
El operador void
se utiliza a menudo para obtener el valor primitivo undefined
, mediante la escritura de void 0
o void(0)
. Tenga en cuenta que void
es un operador, no una función, por lo que ()
no es necesario.
Por lo general, el resultado de una expresión void
y undefined
se pueden usar indistintamente.
Sin embargo, en versiones anteriores de ECMAScript, a window.undefined
podría asignar cualquier valor, y aún es posible usar undefined
como nombre para las variables de parámetros de función dentro de las funciones, interrumpiendo así otro código que se basa en el valor de undefined
.
Sin embargo, void
siempre producirá el verdadero valor undefined
.
void 0
también se usa comúnmente en la reducción de códigos como una forma más corta de escribir undefined
. Además, es probable que sea más seguro ya que algún otro código podría haber manipulado window.undefined
.
Ejemplos:
Volviendo undefined
:
function foo(){
return void 0;
}
console.log(foo()); // undefined
Cambiando el valor de undefined
dentro de un cierto alcance:
(function(undefined){
var str = 'foo';
console.log(str === undefined); // true
})('foo');
El operador unario de negación (-)
La negación unaria ( -
) precede a su operando y la niega, después de intentar convertirla en número.
Sintaxis:
-expression
Devoluciones:
- un
Number
.
Descripción
La negación unaria ( -
) puede convertir los mismos tipos / valores que el operador unario más ( +
).
Los valores que no se pueden convertir se evaluarán en NaN
(no hay -NaN
).
Ejemplos:
-42 // -42
-"42" // -42
-true // -1
-false // -0
-null // -0
-undefined // NaN
-NaN // NaN
-"foo" // NaN
-{} // NaN
-function(){} // NaN
Tenga en cuenta que intentar convertir una matriz puede generar valores de retorno inesperados.
En el fondo, las matrices se convierten primero a sus representaciones de cadena:
[].toString() === '';
[1].toString() === '1';
[1, 2].toString() === '1,2';
El operador intenta convertir esas cadenas en números:
-[] // -0 ( === -'' )
-[1] // -1 ( === -'1' )
-[1, 2] // NaN ( === -'1,2' )
El operador NO bit a bit (~)
El bit a bit NO ( ~
) realiza una operación NOT en cada bit en un valor.
Sintaxis:
~expression
Devoluciones:
- un
Number
.
Descripción
La tabla de verdad para la operación NO es:
una | No un |
---|---|
0 | 1 |
1 | 0 |
1337 (base 10) = 0000010100111001 (base 2)
~1337 (base 10) = 1111101011000110 (base 2) = -1338 (base 10)
Un bitwise no en un número resulta en: -(x + 1)
.
Ejemplos:
valor (base 10) | valor (base 2) | retorno (base 2) | retorno (base 10) |
---|---|---|---|
2 | 00000010 | 11111100 | -3 |
1 | 00000001 | 11111110 | -2 |
0 | 00000000 | 11111111 | -1 |
-1 | 11111111 | 00000000 | 0 |
-2 | 11111110 | 00000001 | 1 |
-3 | 11111100 | 00000010 | 2 |
El operador lógico NO (!)
El operador lógico NOT ( !
) Realiza una negación lógica en una expresión.
Sintaxis:
!expression
Devoluciones:
- un
Boolean
.
Descripción
El operador lógico NOT ( !
) Realiza una negación lógica en una expresión.
Los valores booleanos simplemente se invierten !true === false
y !false === true
.
Los valores no booleanos se convierten primero en valores booleanos, luego se niegan.
Esto significa que se puede usar un NOT lógico doble ( !!
) para emitir cualquier valor a un booleano:
!!"FooBar" === true
!!1 === true
!!0 === false
Todos estos son iguales a !true
:
!'true' === !new Boolean('true');
!'false' === !new Boolean('false');
!'FooBar' === !new Boolean('FooBar');
![] === !new Boolean([]);
!{} === !new Boolean({});
Todos estos son iguales a !false
:
!0 === !new Boolean(0);
!'' === !new Boolean('');
!NaN === !new Boolean(NaN);
!null === !new Boolean(null);
!undefined === !new Boolean(undefined);
Ejemplos:
!true // false
!-1 // false
!"-1" // false
!42 // false
!"42" // false
!"foo" // false
!"true" // false
!"false" // false
!{} // false
![] // false
!function(){} // false
!false // true
!null // true
!undefined // true
!NaN // true
!0 // true
!"" // true
Visión general
Los operadores únicos son operadores con un solo operando. Los operadores únicos son más eficientes que las llamadas de función de JavaScript estándar. Además, los operadores unarios no pueden ser anulados y, por lo tanto, su funcionalidad está garantizada.
Los siguientes operadores unarios están disponibles:
Operador | Operación | Ejemplo |
---|---|---|
delete | El operador de eliminación elimina una propiedad de un objeto. | ejemplo |
void | El operador void descarta el valor de retorno de una expresión. | ejemplo |
typeof | El operador typeof determina el tipo de un objeto dado. | ejemplo |
+ | El operador unario más convierte su operando al tipo Número. | ejemplo |
- | El operador de negación unario convierte su operando a Número, luego lo niega. | ejemplo |
~ | Operador NO a nivel de bit. | ejemplo |
! | Operador lógico NO. | ejemplo |