Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Esta página ha sido traducida del inglés por la comunidad. Aprende más y únete a la comunidad de MDN Web Docs.

Expresiones y operadores

Este capítulo describe las expresiones y los operadores de JavaScript, incluyendo los de asignación, comparación, aritméticos, bit a bit, lógicos, ternarios, de cadena y otros.

También se encuentra disponible una lista completa y detallada de operadores y expresiones en lareferencia.

Operadores

JavaScript tiene los siguientes tipos de operadores. Esta sección describe los operadores y contiene información sobre la precedencia de los mismos.

JavaScript tiene ambos operadoresbinarios yunarios, y un operador ternario especial, el operador condicional. Un operador binario requiere dos operandos, uno antes del operando y otro después del operador:

operando1 operador operando2

Por ejemplo,3+4 ox*y.

Un operador unario requiere un solo operando, ya sea antes o después del operador:

operador operando

o

operando operador

Por ejemplo,x++ o++x.

Operadores de asignación

Un operador de asignación asigna un valor a su operando izquierdo basándose en el valor de su operando derecho. El operador de asignación simple es igual (=), que asigna el valor de su operando derecho a su operando izquierdo. Es decir,x = y asigna el valor dey ax.

También hay operadores de asignación compuestos que son una abreviatura de las operaciones enumeradas en la siguiente tabla:

NombreOperador abreviadoSignificado
Asignaciónx = yx = y
Asignación de adiciónx += yx = x + y
Asignación de restax -= yx = x - y
Asignación de multiplicaciónx *= yx = x * y
Asignación de divisiónx /= yx = x / y
Asignación de residuox %= yx = x % y
Asignación de exponenciaciónx **= yx = x ** y
Asignación de desplazamiento a la izquierdax <<= yx = x << y
Asignación de desplazamiento a la derechax >>= yx = x >> y
Asignación de desplazamiento a la derecha sin signox >>>= yx = x >>> y
Asignación AND bit a bitx &= yx = x & y
Asignación XOR bit a bitx ^= yx = x ^ y
Asignación OR bit a bitx |= yx = x | y
Asignación AND lógicox &&= yx && (x = y)
Asignación OR lógicox ||= yx || (x = y)
Asignación de anulación lógicax ??= yx ?? (x = y)

Valor de retorno y encadenamiento

Como la mayoría de las expresiones, asignaciones comox = y tienen un valor de retorno. Se puede recuperar p. ej. asignando la expresión o registrándola:

bash
const z = (x = y); // O de forma equivalente: const z = x = y;console.log(z); // Registra el valor de retorno de la asignación x = y.console.log(x = y); // O registra el valor de retorno directamente.

El valor de retorno coincide con la expresión a la derecha del signo= en la columna "Significado" de la tabla anterior. Eso significa que(x = y) devuelvey,(x += y) devuelve la suma resultantex + y,(x **= y) devuelve la potencia resultantex ** y, y así sucesivamente.

En el caso de asignaciones lógicas,(x &&= y),(x || = y) y(x ??= y), el valor de retorno es el de la operación lógica sin la asignación, entoncesx && y,x || y yx ?? y, respectivamente.

Ten en cuenta que los valores de retorno siempre se basan en los valores de los operandosantes de la operación.

Al encadenar estas expresiones, cada asignación se evalúa dederecha a izquierda. Considera estos ejemplos:

  • w = z = x = y es equivalente aw = (z = (x = y)) ox = y; z = y; w = y
  • z += x *= y es equivalente ez += (x *= y) otmp = x * y; x *= y; z += tmp (salvo que sintmp).

Desestructuración

Para asignaciones más complejas, la sintaxis deasignación de desestructuración es una expresión de JavaScript que hace posible extraer datos de arreglos u objetos usando una sintaxis que refleja la construcción de arreglos y objetos literales.

js
var foo = ["one", "two", "three"];// sin desestructurarvar one = foo[0];var two = foo[1];var three = foo[2];// con desestructuraciónvar [one, two, three] = foo;

Operadores de comparación

Un operador de comparación compara sus operandos y devuelve un valor lógico en función de si la comparación es verdadera (true) o falsa (false). Los operandos pueden ser valores numéricos, de cadena, lógicos u objetos. Las cadenas se comparan según el orden lexicográfico estándar, utilizando valores Unicode. En la mayoría de los casos, si los dos operandos no son del mismo tipo, JavaScript intenta convertirlos a un tipo apropiado para la comparación. Este comportamiento generalmente resulta en comparar los operandos numéricamente. Las únicas excepciones a la conversión de tipos dentro de las comparaciones involucran a los operadores=== y!==, que realizan comparaciones estrictas de igualdad y desigualdad. Estos operadores no intentan convertir los operandos a tipos compatibles antes de verificar la igualdad. La siguiente tabla describe los operadores de comparación en términos de este código de ejemplo:

js
var var1 = 3;var var2 = 4;
OperadorDescripciónEjemplos que devuelventrue
Igual (==)Devuelvetrue si los operandos son iguales.3 == var1
"3" == var1
3 == '3'
No es igual (!=)Devuelvetrue si los operandosno son iguales.var1 != 4
var2 != "3"
Estrictamente igual (===)Devuelvetrue si los operandos son iguales y del mismo tipo. Consulta tambiénObject.is ysimilitud en JS.3 === var1
Desigualdad estricta (!==)Devuelvetrue si los operandos son del mismo tipo pero no iguales, o son de diferente tipo.var1 !== "3"
3 !== '3'
Mayor que (>)Devuelvetrue si el operando izquierdo es mayor que el operando derecho.var2 > var1 "12" > 2
Mayor o igual que (>=)Devuelvetrue si el operando izquierdo es mayor o igual que el operando derecho.var2 >= var1 var1 >= 3
Menor que (<)Devuelvetrue si el operando izquierdo es menor que el operando derecho.var1 < var2
"2" < 12
Menor o igual (<=)Devuelvetrue si el operando izquierdo es menor o igual que el operando derecho.var1 <= var2 var2 <= 5

Nota:(=>) no es un operador, sino la notación paraFunciones flecha.

Operadores aritméticos

Un operador aritmético toma valores numéricos (ya sean literales o variables) como sus operandos y devuelve un solo valor numérico. Los operadores aritméticos estándar son suma (+), resta (-), multiplicación (*) y división (/). Estos operadores funcionan como lo hacen en la mayoría de los otros lenguajes de programación cuando se usan con números de punto flotante (en particular, ten en cuenta que la división entre cero produceInfinity). Por ejemplo:

js
1 / 2; // 0.51 / 2 == 1.0 / 2.0; // Esto es true

Además de las operaciones aritméticas estándar (+,-,*,/), JavaScript proporciona los operadores aritméticos enumerados en la siguiente tabla:

OperadorDescripciónEjemplo
Residuo (%)Operador binario. Devuelve el resto entero de dividir los dos operandos.12 % 5 devuelve 2.
Incremento (++)Operador unario. Agrega uno a su operando. Si se usa como operador prefijo (++x), devuelve el valor de su operando después de agregar uno; si se usa como operador sufijo (x++), devuelve el valor de su operando antes de agregar uno.Six es 3,++x establecex en 4 y devuelve 4, mientras quex++ devuelve 3 y , solo entonces, establecex en 4.
Decremento (--)Operador unario. Resta uno de su operando. El valor de retorno es análogo al del operador de incremento.Six es 3, entonces--x establecex en 2 y devuelve 2, mientras quex-- devuelve 3 y, solo entonces, establecex en 2.
Negación unaria (-)Operador unario. Devuelve la negación de su operando.Six es 3, entonces-x devuelve -3.
Positivo unario (+)Operador unario. Intenta convertir el operando en un número, si aún no lo es.+"3" devuelve3.+true devuelve1.
Operador de exponenciación (**)Calcula labase a la potencia deexponente, es decir,baseexponente2 ** 3 returns8.10 ** -1 returns0.1.

Operadores bit a bit

Un operador bit a bit trata a sus operandos como un conjunto de 32 bits (ceros y unos), en lugar de números decimales, hexadecimales u octales. Por ejemplo, el número decimal nueve tiene una representación binaria de 1001. Los operadores bit a bit realizan sus operaciones en tales representaciones binarias, pero devuelven valores numéricos estándar de JavaScript.

La siguiente tabla resume los operadores bit a bit de JavaScript.

OperadorUsoDescripción
AND a nivel de bitsa & bDevuelve un uno en cada posición del bit para los que los bits correspondientes de ambos operandos son unos.
OR a nivel de bitsa | bDevuelve un cero en cada posición de bit para el cual los bits correspondientes de ambos operandos son ceros.
XOR a nivel de bitsa ^ bDevuelve un cero en cada posición de bit para la que los bits correspondientes son iguales. [Devuelve uno en cada posición de bit para la que los bits correspondientes son diferentes].
NOT a nivel de bits~ aInvierte los bits de su operando.
Desplazamiento a la izquierdaa << bDesplazaa en representación binariab bits hacia la izquierda, desplazándose en ceros desde la derecha.
Desplazamiento a la derecha de propagación de signoa >> bDesplazaa en representación binariab bits a la derecha, descartando los bits desplazados.
Desplazamiento a la derecha de relleno ceroa >>> bDesplazaa en representación binariab bits hacia la derecha, descartando los bits desplazados y desplazándose en ceros desde la izquierda.

Operadores lógicos bit a bit

Conceptualmente, los operadores lógicos bit a bit funcionan de la siguiente manera:

  • Los operandos se convierten en enteros de treinta y dos bits y se expresan mediante una serie de bits (ceros y unos). A los números con más de 32 bits se les descartan los bits más significativos. Por ejemplo, el siguiente número entero con más de 32 bits se convertirá en un número entero de 32 bits:

    bash
    Antes:  1110 0110 1111 1010 0000 0000 0000 0110 0000 0000 0001Después:               1010 0000 0000 0000 0110 0000 0000 0001
  • Cada bit en el primer operando se empareja con el bit correspondiente en el segundo operando: primer bit al primer bit, segundo bit al segundo bit, y así sucesivamente.

  • El operador se aplica a cada par de bits y el resultado se construye bit a bit.

Por ejemplo, la representación binaria de nueve es 1001 y la representación binaria de quince es 1111. Entonces, cuando los operadores bit a bit se aplican a estos valores, los resultados son los siguientes:

ExpresiónResultadoDescripción binaria
15 & 991111 & 1001 = 1001
15 | 9151111 | 1001 = 1111
15 ^ 961111 ^ 1001 = 0110
~15-16~ 0000 0000 ... 0000 1111 = 1111 1111 ... 1111 0000
~9-10~ 0000 0000 ... 0000 1001 = 1111 1111 ... 1111 0110

Ten en cuenta que los 32 bits se invierten utilizando el operadorNOT a nivel de bits y que los valores con el bit más significativo (más a la izquierda) establecido en 1 representan números negativos (representación en complemento a dos).~x evalúa al mismo valor que evalúa-x - 1.

Operadores de desplazamiento de bits

Los operadores de desplazamiento bit a bit toman dos operandos: el primero es una cantidad que se va a desplazar y el segundo especifica el número de posiciones de bit por las que se va a desplazar el primer operando. La dirección de la operación de desplazamiento es controlada por el operador utilizado.

Los operadores de desplazamiento convierten sus operandos en enteros de treinta y dos bits y devuelven un resultado del mismo tipo que el operando izquierdo.

Los operadores de desplazamiento se enumeran en la siguiente tabla.

OperadorDescripciónEjemplo
Desplazamiento a la izquierda (<<)Este operador desplaza el primer operando el número especificado de bits a la izquierda. Los bits desplazados en exceso hacia la izquierda se descartan. Los bits cero se desplazan desde la derecha.9<<2 produce 36, porque 1001 desplazado 2 bits a la izquierda se convierte en 100100, que es 36.
Desplazamiento a la derecha de propagación de signo (>>)Este operador desplaza el primer operando el número especificado de bits a la derecha. Los bits desplazados en exceso hacia la derecha se descartan. Las copias del bit más a la izquierda se desplazan desde la izquierda.9>>2 produce 2, porque 1001 desplazado 2 bits a la derecha se convierte en 10, que es 2. Del mismo modo,-9>>2 produce -3, porque el signo se conserva.
Desplazamiento a la derecha de relleno cero (>>>)Este operador desplaza el primer operando el número especificado de bits a la derecha. Los bits desplazados en exceso hacia la derecha se descartan. Los bits cero se desplazan desde la izquierda.19>>>2 produce 4, porque 10011 desplazado 2 bits a la derecha se convierte en 100, que es 4. Para números no negativos, el desplazamiento a la derecha de relleno con ceros y el desplazamiento a la derecha de propagación del signo producen el mismo resultado.

Operadores lógicos

Los operadores lógicos se utilizan normalmente con valores booleanos (lógicos); cuando lo son, devuelven un valor booleano. Sin embargo, los operadores&& y|| en realidad devuelven el valor de uno de los operandos especificados, por lo que si estos operadores se utilizan con valores no booleanos, pueden devolver un valor no booleano. Los operadores lógicos se describen en la siguiente tabla.

OperadorUsoDescripción
AND Lógico (&&)expr1 && expr2Devuelveexpr1 si se puede convertir afalse; de lo contrario, devuelveexpr2. Por lo tanto, cuando se usa con valores booleanos,&& devuelvetrue si ambos operandos sontrue; de lo contrario, devuelvefalse.
OR lógico (||)expr1 || expr2Devuelveexpr1 si se puede convertir atrue; de lo contrario, devuelveexpr2. Por lo tanto, cuando se usa con valores booleanos,|| devuelvetrue si alguno de los operandos estrue; si ambos son falsos, devuelvefalse.
NOT lógico (!)!exprDevuelvefalse si su único operando se puede convertir atrue; de lo contrario, devuelvetrue.

Ejemplos de expresiones que se pueden convertir afalse son aquellos que se evalúan comonull, 0,NaN, la cadena vacía ("") oundefined.

El siguiente código muestra ejemplos del operador&& (AND lógico).

js
var a1 = true && true; // t && t devuelve truevar a2 = true && false; // t && f devuelve falsevar a3 = false && true; // f && t devuelve falsevar a4 = false && 3 == 4; // f && f devuelve falsevar a5 = "Cat" && "Dog"; // t && t devuelve Dogvar a6 = false && "Cat"; // f && t devuelve falsevar a7 = "Cat" && false; // t && f devuelve false

El siguiente código muestra ejemplos del operador || (OR lógico).

js
var o1 = true || true; // t || t devuelve truevar o2 = false || true; // f || t devuelve truevar o3 = true || false; // t || f devuelve truevar o4 = false || 3 == 4; // f || f devuelve falsevar o5 = "Cat" || "Dog"; // t || t devuelve Catvar o6 = false || "Cat"; // f || t devuelve Catvar o7 = "Cat" || false; // t || f devuelve Cat

El siguiente código muestra ejemplos de el operador ! (NOT lógico).

js
var n1 = !true; // !t devuelve falsevar n2 = !false; // !f devuelve truevar n3 = !"Cat"; // !t devuelve false

Evaluación de cortocircuito

Debido a que las expresiones lógicas se evalúan de izquierda a derecha, se prueban para una posible evaluación de "cortocircuito" utilizando las siguientes reglas:

  • false &&anything se evalúa en cortocircuito comofalse.
  • true ||anything se evalúa en cortocircuito comotrue.

Las reglas de la lógica garantizan que estas evaluaciones sean siempre correctas. Ten en cuenta que la parteanything de las expresiones anteriores no se evalúa, por lo que los efectos secundarios de hacerlo no surten efecto.

Ten en cuenta que para el segundo caso, en el código moderno puedes usar el nuevooperador de fusión nulo (??) que funciona como||, pero solo devuelve la segunda expresión, cuando la primera es "nullish", es decir,null, el valor nulo representa la ausencia intencional de cualquier valor de objeto. Es uno de los valores primitivos de JavaScript y se trata como falso para las operaciones booleanas. oundefined la propiedad global undefined representa el valor "undefined" primitivo. Es uno de los tipos primitivos de JavaScript. Por tanto, es la mejor alternativa para proporcionar valores predeterminados, cuando valores como'' o0 también son valores válidos para la primera expresión.

Operadores de cadena

Además de los operadores de comparación, que se pueden usar en valores de cadena, el operador de concatenación (+) concatena dos valores de cadena, devolviendo otra cadena que es la unión de los dos operandos de cadena.

Por ejemplo,

js
console.log("mi " + "cadena"); // la consola registra la cadena "mi cadena".

El operador de asignación abreviada+= también se puede utilizar para concatenar cadenas.

Por ejemplo,

js
var mystring = "alpha";mystring += "bet"; // se evalúa como "alphabet" y asigna este valor a mystring.

Operador condicional (ternario)

Eloperador condicional es el único operador de JavaScript que toma tres operandos. El operador puede tener uno de dos valores según una condición. La sintaxis es:

condition ? val1 : val2

Sicondition estrue, el operador tiene el valor deval1. De lo contrario, tiene el valor deval2. Puedes utilizar el operador condicional en cualquier lugar donde normalmente utilizas un operador estándar.

Por ejemplo,

js
var status = age >= 18 ? "adult" : "minor";

Esta declaración asigna el valor "adult" a la variablestatus siage es de dieciocho años o más. De lo contrario, asigna el valor "minor" astatus.

Operador coma

Eloperador coma (,) simplemente evalúa ambos operandos y devuelve el valor del último operando. Este operador se utiliza principalmente dentro de un buclefor, para permitir que se actualicen múltiples variables cada vez a través del bucle. Se considera de mal estilo usarlo en otros lugares, cuando no es necesario. A menudo, en su lugar pueden y se deben utilizar dos declaraciones independientes.

Por ejemplo, sia es un arreglo bidimensional con 10 elementos en un lado, el siguiente código usa el operadorcoma para actualizar dos variables a la vez. El código imprime los valores de los elementos diagonales en el arreglo:

js
var x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];var a = [x, x, x, x, x];for (var i = 0, j = 9; i <= j; i++, j--)  //                              ^  console.log("a[" + i + "][" + j + "]= " + a[i][j]);

Operadores unarios

Una operación unaria es una operación con un solo operando.

delete

El operadordelete elimina la propiedad de un objeto. La sintaxis es:

js
delete object.property;delete object[propertyKey];delete objectName[index];delete property; // legal solo dentro de una declaración with

dondeobject es el nombre de un objeto,property es una propiedad existente ypropertyKey es una cadena o símbolo que hace referencia a una propiedad existente.

La cuarta forma es legal solo dentro de una declaraciónwith, para eliminar una propiedad de un objeto, y también para las propiedades del objeto global.

Si el operadordelete tiene éxito, elimina la propiedad del objeto. Intentar acceder a él después dará como resultadoundefined. El operadordelete devuelvetrue si la operación es posible; devuelvefalse si la operación no es posible.

js
x = 42; // implícitamente crea window.xvar y = 43;var myobj = { h: 4 }; // crea un objeto con la propiedad hdelete x; // devuelve true (se puede eliminar si se crea implícitamente)delete y; // devuelve false (no se puede borrar si se declara con var)delete Math.PI; // devuelve false (no se pueden eliminar propiedades no configurables)delete myobj.h; // devuelve true (puede eliminar propiedades definidas por el usuario)
Eliminar elementos de un arreglo

Dado que los arreglos solo son objetos, técnicamente es posibledelete elementos de ellos. Sin embargo, esto se considera una mala práctica, trata de evitarlo. Cuando eliminas una propiedad de arreglo, la longitud del arreglo no se ve afectada y otros elementos no se vuelven a indexar. Para lograr ese comportamiento, es mucho mejor simplemente sobrescribir el elemento con el valorundefined. Para manipular realmente el arreglo, usa los diversos métodos de arreglo, comosplice.

typeof

Eloperador typeof se utiliza de cualquiera de las siguientes formas:

typeof operandtypeof (operand)

El operadortypeof devuelve una cadena que indica el tipo de operando no evaluado.operando es la cadena, variable, palabra clave u objeto para el que se devolverá el tipo. Los paréntesis son opcionales.

Supón que defines las siguientes variables:

js
var myFun = new Function("5 + 2");var shape = "round";var size = 1;var foo = ["Apple", "Mango", "Orange"];var today = new Date();

El operadortypeof devuelve los siguientes resultados para estas variables:

js
typeof myFun; // devuelve "function"typeof shape; // devuelve "string"typeof size; // devuelve "number"typeof foo; // devuelve "object"typeof today; // devuelve "object"typeof doesntExist; // devuelve "undefined"

Para las palabras clavetrue ynull, el operadortypeof devuelve los siguientes resultados:

js
typeof true; // devuelve "boolean"typeof null; // devuelve "object"

Para un número o cadena, el operadortypeof devuelve los siguientes resultados:

js
typeof 62; // devuelve "number"typeof "Hola mundo"; // devuelve "string"

Para los valores de propiedad, el operadortypeof devuelve el tipo de valor que contiene la propiedad:

js
typeof document.lastModified; // devuelve "string"typeof window.length; // devuelve "number"typeof Math.LN2; // devuelve "number"

Para métodos y funciones, el operadortypeof devuelve los siguientes resultados:

js
typeof blur; // devuelve "function"typeof eval; // devuelve "function"typeof parseInt; // devuelve "function"typeof shape.split; // devuelve "function"

Para objetos predefinidos, el operadortypeof devuelve los siguientes resultados:

js
typeof Date; // devuelve "function"typeof Function; // devuelve "function"typeof Math; // devuelve "object"typeof Option; // devuelve "function"typeof String; // devuelve "function"

void

Eloperador void se utiliza de cualquiera de las siguientes formas:

void (expression)void expression

El operadorvoid especifica una expresión que se evaluará sin devolver un valor.expression es una expresión de JavaScript para evaluar. Los paréntesis que rodean la expresión son opcionales, pero es un buen estilo usarlos.

Operadores relacionales

Un operador relacional compara sus operandos y devuelve un valorBoolean basado en si la comparación es verdadera.

in

Eloperador in devuelvetrue si la propiedad especificada está en el objeto especificado. La sintaxis es:

js
propNameOrNumber in objectName;

dondepropNameOrNumber es una expresión de cadena, numérica o de símbolo que representa un nombre de propiedad o índice de arreglo, yobjectName es el nombre de un objeto.

Los siguientes ejemplos muestran algunos usos del operadorin.

js
// Arreglosvar trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];0 in trees;        // devuelve true3 in trees;        // devuelve true6 in trees;        // devuelve false'bay' in trees;    // devuelve false (debes especificar el número del índice,                   // no el valor en ese índice)'length' en trees; // devuelve true (la longitud es una propiedad de Array)// objetos integrados'PI' in Math;          // devuelve truevar myString = new String('coral');'length' in myString;  // devuelve true// Objetos personalizadosvar mycar = { make: 'Honda', model: 'Accord', year: 1998 };'make' in mycar;  // devuelve true'model' in mycar; // devuelve true

instanceof

Eloperador instanceof devuelvetrue si el objeto especificado es del tipo de objeto especificado. La sintaxis es:

objectName instanceof objectType

dondeobjectName es el nombre del objeto para comparar conobjectType, yobjectType es un tipo de objeto, comoDate oArray.

Utilizainstanceof cuando necesites confirmar el tipo de un objeto en tiempo de ejecución. Por ejemplo, al detectar excepciones, puedes ramificar a diferentes controladores según el tipo de excepción lanzada.

Por ejemplo, el siguiente código usainstanceof para determinar sitheDay es un objetoDate. Debido a quetheDay es un objetoDate, las instrucciones de la expresiónif se ejecutan.

js
var theDay = new Date(1995, 12, 17);if (theDay instanceof Date) {  // instrucciones a ejecutar}}

Precedencia de los operadores

Laprecedencia de los operadores determina el orden en que se aplican al evaluar una expresión. Puedes redefinir la precedencia de los operadores mediante el uso de paréntesis.

La siguiente tabla describe la precedencia de los operadores, de mayor a menor.

Tipo de operadorOperadores individuales
miembro. []
llamar / crear instancia() new
negación / incremento! ~ - + ++ -- typeof void delete
multiplicar / dividir* / %
adición / sustracción+ -
desplazamiento bit a bit<< >> >>>
relacional< <= > >= in instanceof
igualdad== != === !==
AND bit a bit&
XOR bit a bit^
OR bit a bit|
AND lógico&&
OR lógico||
condicional?:
asignación= += -= *= /= %= <<= >>= >>>= &= ^= |= &&= ||= ??=
coma,

Puedes encontrar una versión más detallada de esta tabla, completa con enlaces a detalles adicionales sobre cada operador, enReferencia de JavaScript.

Expresiones

Unaexpresión es cualquier unidad de código válida que se resuelve en un valor.

Toda expresión sintácticamente válida se resuelve en algún valor, pero conceptualmente, hay dos tipos de expresiones: con efectos secundarios (por ejemplo: las que asignan valor a una variable) y las que en algún sentido evalúan y por lo tanto se resuelven en un valor.

La expresiónx = 7 es un ejemplo del primer tipo. Esta expresión usa eloperador = para asignar el valor siete a la variablex. La expresión en sí se evalúa como siete.

El código3 + 4 es un ejemplo del segundo tipo de expresión. Esta expresión usa el operador + para sumar tres y cuatro sin asignar el resultado, siete, a una variable.

JavaScript tiene las siguientes categorías de expresión:

  • Aritméticas: se evalúa como un número, por ejemplo 3.14159. (Generalmente usaoperadores aritméticos).
  • Cadenas: se evalúa como una cadena de caracteres, por ejemplo, "Fred" o "234". (Generalmente usaoperadores de cadena).
  • Lógicas: se evalúan comotrue ofalse. (A menudo implicaoperadores lógicos).
  • Expresiones primarias: palabras clave básicas y expresiones generales en JavaScript.
  • Expresiones del lado izquierdo: los valores del lado izquierdo son el destino de una asignación.

Expresiones primarias

Palabras clave básicas y expresiones generales en JavaScript.

this

Utiliza lapalabra clave this para hacer referencia al objeto actual. En general,this se refiere al objeto que llama en un método. Usathis con la notación de punto o entre corchetes:

this['propertyName']this.propertyName

Supongamos que una función llamadavalidate valida la propiedadvalue de un objeto, dado el objeto y los valores alto y bajo:

js
function validate(obj, lowval, hival) {  if (obj.value < lowval || obj.value > hival) {    console.log("¡Valor no válido!");  }}

Puedes llamar avalidate en el controlador de eventosonChange de cada elemento de formulario, utilizandothis para pasarlo al elemento de formulario, como en el siguiente ejemplo:

html
<p>Ingresa un número entre 18 y 99:</p><input type="text" name="age" size="3" onChange="validate(this, 18, 99);" />

Operador de agrupación

El operador de agrupación() controla la precedencia de la evaluación en las expresiones. Por ejemplo, puedes redefinir la multiplicación y la división primero, luego la suma y la resta para evaluar la suma primero.

js-nolint;
var a = 1;var b = 2;var c = 3;// precedencia predeterminadaa + b * c;     // 7// evaluado por omisión asía + (b * c);   // 7// ahora prevalece sobre la precedencia// suma antes de multiplicar(a + b) * c;   // 9// que es equivalente aa * c + b * c; // 9

Expresiones del lado izquierdo

Los valores de la izquierda son el destino de una asignación.

new

Puedes utilizar eloperador new para crear una instancia de un tipo de objeto definido por el usuario o de uno de los tipos de objeto integrados. Utilizanew de la siguiente manera:

js
var objectName = new objectType([param1, param2, ..., paramN]);

super

Lapalabra clave super se utiliza para llamar a funciones en el padre de un objeto. Es útil conclases llamar al constructor padre, por ejemplo.

super([arguments]); // llama al constructor padre.super.functionOnParent([arguments]);

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp