Capítulo 4: Expresiones y operadores
1. ¿Qué es un operando y qué es un tipo de resultado?
En programación informática e informática, los operandos se refieren a los valores o datos que participan en un cálculo u operación . Los operandos pueden ser números, variables, constantes o expresiones, según el cálculo u operación específica. Los operandos se utilizan en diversos cálculos, como operaciones aritméticas, operaciones lógicas, operaciones bit a bit, etc.
- Ejemplo de operandos:
- En las operaciones aritméticas, los operandos suelen ser los números que intervienen en la operación, como por ejemplo dos números además: 2 + 3. 2 y 3 aquí son los operandos.
- En operaciones lógicas, los operandos son valores utilizados para juicios lógicos, como expresiones booleanas
a && b
:. Aquí a y b son los operandos y sus valores son verdadero o falso (verdadero o falso). - En las operaciones bit a bit, los operandos son valores que se operan en el nivel de bits binarios, como la operación bit a bit AND (&):
a & b
. Aquí a y b son números binarios utilizados para operaciones AND bit a bit.
El número de operandos depende del tipo de operador. Por ejemplo, los operadores unarios (como el operador de negación "!") requieren solo un operando, mientras que los operadores binarios (como el operador de suma "+") requieren dos operandos.
Tipo de resultado se refiere al tipo de datos del resultado de una operación u operación. Cuando se realiza una operación u operación sobre un operando, se obtendrá un resultado de acuerdo con las reglas del operador y el tipo de datos del operando.El tipo de datos de este resultado es el tipo de resultado.
- Ejemplos de tipos de resultados:
- En operaciones aritméticas, el resultado de sumar dos números enteros es un número entero, por lo que el tipo de resultado es un tipo de número entero.
- En las operaciones lógicas, el resultado de la operación lógica AND es un valor booleano (verdadero o falso), por lo que el tipo de resultado es booleano.
- En las operaciones bit a bit, el resultado de la operación AND bit a bit es un nuevo número binario, por lo que el tipo de resultado es un tipo binario.
Los tipos de resultados son importantes para garantizar la exactitud y coherencia de los cálculos. En programación, si se realizan operaciones en operandos de diferentes tipos, el lenguaje de programación realizará automáticamente la conversión de tipos para obtener un tipo de resultado razonable.
Por ejemplo, en JavaScript:
javascriptCopiar código
const x = 5; // x是一个整数 const y = 2.5; // y是一个浮点数 const result = x + y; // 进行算术运算,结果为7.5,result的类型为浮点数
En este ejemplo, x es un número entero e y es un número de punto flotante y sus tipos de datos son diferentes. Pero al agregar, JavaScript convierte automáticamente números enteros en números de punto flotante para obtener el tipo de resultado correcto. El resultado es un número de punto flotante.
ejemplo:
Métodos de cadena
Reemplazar contenido de cadena
El método replace() reemplaza el valor especificado en la cadena con otro valor
Convertir a mayúsculas y minúsculas
Convertir cadena a mayúsculas mediante toUpperCase()
método concat()
concat() concatena dos o más cadenas
var texto = "Hola" + " " + "¡Mundo!";
var text = "Hola".concat(" ", "¡Mundo!");
cadena.recortar()
El método trim() elimina los espacios en blanco en ambos extremos de la cadena.
var str = " ¡Hola mundo! ";
alerta(str.trim());
método charAt()
El método charAt() devuelve la cadena en el subíndice (posición) especificado en la cadena.
método charCodeAt()
El método charCodeAt() devuelve la codificación Unicode del carácter en el índice especificado en la cadena.
Convertir cadena a matriz
Puede convertir la cadena en una matriz mediante split()
var txt = "a,b,c,d,e"; // String
txt.split(","); // Separe las matrices de variables con comas
txt.split( " "); // Separar por espacios
txt.split("|"); // Dividir en tubería
Preguntas de práctica:
Encuentra la posición de txt
un carácter en una cadena h
.
var txt = "abcdefghijklm"; var pos = txt.indexOf("h"); // 7
valor numérico
var x = "100";
var y = "10";
var z = x / y; // z será 10
var x = "100";
var y = "10";
var z = x * y; // z será 1000
var x = "100";
var y = "10";
var z = x - y; // z será 90
var x = "100";
var y = "10";
var z = x + y; // z no será 110 (será 10010)
Puede ser reemplazado por
var x = '100'; var y = '10'; var z = parseInt(x) + parseInt(y) ; consola.log(z); // salida: 110
NaN: no es un valor numérico
var x = 100 / "Apple"; // x será NaN (no un número)
var x = 100 / "10"; // x será 10
var x = 100 / "Apple";
isNaN(x); // devuelve verdadero porque x no es un número
hexadecimal
JavaScript interpretará las constantes numéricas con el prefijo 0x como hexadecimal
Utilice el método toString() para generar el número como hexadecimal, octal o binario.
El hexadecimal se basa en la base 16. El decimal se basa en base 10. Octal es base 8. El binario es base 2.
var myNumber = 32;
myNumber.toString(10); // Devuelve 32
myNumber.toString(32); // Devuelve 10
myNumber.toString(16); // Devuelve 20
myNumber.toString(8); // Devuelve 40
myNumber .toString(2); // Devuelve 100000
Métodos numéricos y propiedades.
var x = 123; x.toString
variable
(); // Devuelve 123 de la
método toExponential()
toExponential() devuelve un valor de cadena que contiene un número que ha sido redondeado usando notación exponencial
var x = 9.656;
x.toExponential(2); // devuelve 9.66e+0
método toFixed()
toFixed() devuelve un valor de cadena que contiene un número con el número especificado de decimales
varx =
9,656
; _
método toPrecision()
toPrecision() devuelve un valor de cadena que contiene un número de longitud especificada
var x = 123; x.valueOf
variable
(); // Devuelve 123 de la
Convertir variable a valor numérico
Estos tres métodos de JavaScript se pueden utilizar para convertir variables en números:
- Método Número() var z = Número(x)+Número(y)
- método parseInt() var z = parseInt(x)+parseInt(y) //Analiza una cadena y devuelve un valor. Se permiten espacios. Devuelve sólo el primer número
- El método parseFloat() var z = parseFloat(x)+parseFloat(y) analiza una cadena y devuelve un valor numérico. Se permiten espacios. Devuelve sólo el primer número
Estos métodos no son métodos numéricos , sino métodos globales de JavaScript.
Operaciones numéricas
Matemáticas.ronda()
El valor de retorno de Math.round(x) es x redondeado al entero más cercano
Matemáticas.pow()
El valor de retorno de Math.pow(x, y) es x elevado a la potencia y:
Matemáticas.sqrt()
Math.sqrt(x) devuelve la raíz cuadrada de x:
Math.sqrt(64); // devuelve 8
Matemáticas.abs()
Math.abs(x) devuelve el valor absoluto (positivo) de x:
Math.abs(-4.7); // devuelve 4.7
Matemáticas.ceil()
El valor de retorno de Math.ceil(x) es el entero más cercano redondeado a x:
Math.ceil(4.4); // devuelve 5
Matemáticas.piso()
El valor de retorno de Math.floor(x) es el entero más cercano redondeado a la baja a x
Math.floor(4.7); // devuelve 4
Matemáticas.sin()
Math.sin(x) Devuelve el seno (un valor entre -1 y 1) del ángulo x en radianes.
Si desea utilizar ángulos en lugar de radianes, debe convertir los ángulos a radianes:
Ángulo en radianes = Ángulo en grados x PI/180.
Math.sin(90 * Math.PI / 180); // Devuelve 1 (seno de 90 grados)
Math.min() y Math.max()
Math.min() y Math.max() se pueden utilizar para encontrar el valor más bajo o más alto en una lista de parámetros:
número aleatorio
formación
Una matriz es un tipo especial de variable que puede almacenar más de un valor a la vez.
Función Array.foreach()
Agregar elementos de matriz
La mejor manera de agregar nuevos elementos a una matriz es usar el método push()
matriz asociativa
Muchos elementos de programación admiten matrices indexadas con nombres.
Las matrices con índices con nombre se denominan matrices asociativas (o hashes).
JavaScript no admite matrices indexadas con nombre.
En JavaScript, las matrices solo se pueden indexar numéricamente .
var persona = [];
persona[0] = "John";
persona[1] = "Doe";
persona[2] = 46;
var x = persona.length; // persona.length devolverá 3
var y = persona [0]; // persona[0] devolverá "John"
Evite la nueva matriz ()
No es necesario utilizar el constructor de matrices integrado de JavaScript, new Array().
¡Utilice [] en su lugar!
Las siguientes dos declaraciones diferentes crean una nueva matriz vacía denominada puntos:
var puntos = new Array(); // malo
var puntos = []; // bueno
Convertir matriz a cadena
El método JavaScript toString() convierte una matriz en una cadena de valores de matriz (separados por comas)
El método join() también puede combinar todos los elementos de la matriz en una cadena.
Se comporta de manera similar toString()
, pero también puedes especificar el delimitador.
var ff = [34,5,6,77,8]
indefinido
ff.join() // '34,5,6,77,8'
Pero si desea eliminar las comas en la cadena, puede escribir
var ff = [34, 5, 6, 77, 8]; // Usa una cadena vacía como delimitador para concatenar los elementos de la matriz
var joinString = ff.join(" ");
console.log(joinedString); // Salida: "3456778"
Hacer estallar y empujar
Cuando se trabaja con matrices, eliminar elementos y agregar otros nuevos es sencillo.
Hacer estallar y empujar se refiere a:
Extraiga un elemento de una matriz o inserte un elemento en una matriz.
donde s = [1,2,33,22]
s.pop() // [1,2,33]
s.push(55) // [1,2,33,55]
elemento de desplazamiento
El desplazamiento es equivalente a hacer estallar, pero se ocupa del primer elemento en lugar del último.
El método shift() elimina el primer elemento de la matriz y "desplaza" todos los demás elementos a índices más bajos.
El método unshift() ( al principio ) agrega nuevos elementos a la matriz y "desplaza hacia atrás" los elementos antiguos
Eliminar elemento
Dado que las matrices de JavaScript son objetos, los elementos que contienen se pueden eliminar utilizando el operador de eliminación de JavaScript.
matriz de empalme
El método splice() se puede utilizar para agregar nuevos elementos a una matriz:
var frutas = ["Plátano", "Naranja", "Manzana", "Mango"];
frutas.splice(2, 2, "Limón", "Kiwi");
['Apple', 'Mango']0: "Apple"1: "Mango"length: 2[[Prototype]]: Array(0) frutas ['Banana', 'Orange', 'Lemon', 'Kiwi
'
]
Utilice splice() para eliminar elementos
Con una parametrización inteligente, puedes usar splice() para eliminar elementos sin dejar "agujeros" en la matriz.
var frutas = ["Banana", "Orange", "Apple", "Mango"];
frutas.splice(0, 1); // Elimina el primer elemento de frutas
Fusionar (concatenar) matrices
El método concat() crea una nueva matriz fusionando (concatenando) matrices existentes:
Ejemplo (fusionar tres matrices)
var arr1 = ["Cecilie", "Solitario"];
var arr2 = ["Emil", "Tobías", "Linus"];
var arr3 = ["Robin", "Morgan"];
var misNiños = arr1.concat(arr2, arr3);
matriz de cultivos
El método slice() corta una nueva matriz a partir de una porción de la matriz.
Este ejemplo recorta una matriz a partir del elemento 1 de la matriz ("Naranja"):
método:
ordenar matriz
El método sort() ordena una matriz en orden alfabético:
El método reverse() invierte los elementos de una matriz.
Puedes usar esto para ordenar una matriz en orden descendente:
función de relación
El propósito de las funciones de comparación es definir un orden de clasificación alternativo.
La función de comparación debería devolver un valor negativo, cero o positivo, según los argumentos:
Usando Math.max() en matrices
Puedes usar Math.max.apply para encontrar el valor más alto en una matriz:
Usando Math.min() en matrices
Puedes usar Math.min.apply para encontrar el valor más bajo en una matriz:
Math.min.apply([1, 2, 3]) es igual a Math.min(1, 2, 3).
iteración de matriz de JavaScript
El método forEach() llama a una función (función de devolución de llamada) una vez para cada elemento de la matriz
var l = '';
número var = [33, 4, 56, 67];
number.forEach(function(element) { // En esta función de devolución de llamada, el elemento es el elemento actual en la matriz
l += elemento + ' ';
//Agrega el elemento actual a la variable l, separado por espacios
});
matriz.map()
El método map() crea una nueva matriz ejecutando una función en cada elemento de la matriz.
El método map() no realizará una función en elementos de la matriz que no tengan valores.
El método map() no cambia la matriz original.
Este ejemplo multiplica cada valor de matriz por 2:
//matriz original
números var = [1, 2, 3, 4, 5];
// Usa map() para multiplicar cada número por 2 y devolver la nueva matriz
var a = números.map(función(número) { número de retorno * 2; });
console.log(a); // Salida: [2, 4, 6, 8, 10]
Array.filter() se utiliza para crear una nueva matriz que contiene elementos que cumplen una condición
El método filter() crea una nueva matriz que contiene los elementos de la matriz que pasan la prueba.
Array.every() se utiliza para comprobar si todos los elementos de la matriz cumplen la condición.
El método each() comprueba si todos los valores de la matriz pasan la prueba.
Array.some() se utiliza para comprobar si al menos un elemento de la matriz cumple la condición.
El método some() comprueba si ciertos valores de la matriz pasan la prueba.
Este ejemplo verifica si ciertos valores de la matriz son mayores que 18:
Array.reduce() comienza con el primer elemento de la matriz y realiza operaciones de reducción de izquierda a derecha.
El método reduce() ejecuta una función en cada elemento de la matriz para producir (reducirlo) un valor único.
El método reduce() funciona de izquierda a derecha en la matriz. Véase también reducirRight().
El método reduce() no reduce la matriz original.
Array.reduceRight() comienza desde el último elemento de la matriz y realiza la operación de reducción de derecha a izquierda.
El método reduceRight() ejecuta una función en cada elemento de la matriz para producir (reducirlo) un valor único.
El método reduceRight() funciona de derecha a izquierda en la matriz. Véase también reducir().
El método reduceRight() no reduce la matriz original.
matriz.indexOf()
El método indexOf() busca en una matriz el valor de un elemento y devuelve su posición.
Nota: La posición del primer elemento es 0, la posición del segundo elemento es 1, y así sucesivamente.
Array.lastIndexOf()
Array.lastIndexOf() es como Array.indexOf(), pero busca desde el final de la matriz.
matriz.buscar()
El método find() devuelve el valor del primer elemento de la matriz que pasa la función de prueba.
Este ejemplo encuentra (devuelve) el valor del primer elemento mayor que 18:
matriz.findIndex()
El método findIndex() devuelve el índice del primer elemento de la matriz que pasa la función de prueba.
Este ejemplo encuentra el índice del primer elemento mayor que 18:
Métodos de fecha de JavaScript
Operadores booleanos de JavaScript
Operadores de comparación de JavaScript
JavaScript si otra declaración
Declaración de cambio de JavaScript
JavaScript para bucle
tipos de datos javascript
modo estricto de JavaScript
Función de flecha de flecha de JavaScript
Método de objeto ()
Uso de call()
aplicar() para eliminar duplicados
1. Tarea desestructurante:
La asignación de estructuración le permite extraer valores de una matriz u objeto y asignarlos a variables, lo que hace que el código sea más conciso y legible.
javascriptCopiar código
const [a, b] = [1, 2]; // a = 1, b = 2 const { firstName, lastName } = person; // 从对象中提取属性值
2. Sintaxis extendida y parámetros restantes:
La sintaxis extendida permite la copia rápida de matrices u objetos, mientras que los parámetros restantes le permiten recibir una cantidad ilimitada de parámetros y recopilarlos en una matriz.
javascriptCopiar código
const array1 = [1, 2, 3]; const array2 = [...array1, 4, 5]; // [1, 2, 3, 4, 5] function sum(...numbers) { return numbers.reduce((acc, num) => acc + num, 0); }
3. Promesa y programación asincrónica:
Las promesas son una forma de manejar operaciones asincrónicas que pueden gestionar mejor el infierno de las devoluciones de llamadas.
javascriptCopiar código
function fetchData() { return new Promise((resolve, reject) => { // 异步操作 if (success) { resolve(data); } else { reject(error); } }); } fetchData() .then(data => console.log(data)) .catch(error => console.error(error));
4. Función de flecha:
Las funciones de flecha proporcionan una sintaxis más concisa para definir funciones y capturar automáticamente el this
valor del contexto.
javascriptCopiar código
const multiply = (a, b) => a * b; const person = { name: 'John', sayHi: () => { console.log(`Hello, ${this.name}`); // 这里的 this 不是 person 对象 } };
5. Herencia y extensión de clases:
JavaScript admite la herencia basada en clases, lo que le permite crear una clase y heredar las propiedades y métodos de otra clase.
javascriptCopiar código
class Animal { constructor(name) { this.name = name; } speak() { console.log(`${this.name} makes a sound.`); } } class Dog extends Animal { speak() { console.log(`${this.name} barks.`); } }
¿Qué es una promesa?
Promise es un modelo de programación en JavaScript para manejar operaciones asincrónicas, que le permite escribir y administrar código asincrónico de una manera más intuitiva, evitando el problema del infierno de devolución de llamadas. Una Promesa representa una operación que puede completarse o fallar en el futuro y proporciona una estructura para manejar los resultados o errores una vez completada la operación.
La promesa consta de los siguientes tres estados:
-
Pendiente : Estado inicial, que indica que la operación no se ha completado o ha fallado.
-
Cumplido : Indica que la operación se completó con éxito y lleva un valor (resultado).
-
Rechazado (fallido) : Indica que la operación falló, generalmente lleva un objeto de error que indica el motivo del fallo de la operación.
El papel de la Promesa:
-
Código asincrónico más legible : las promesas hacen que el código asincrónico sea más legible y más parecido al código sincrónico. Evita múltiples niveles de funciones de devolución de llamada anidadas y mejora la legibilidad y el mantenimiento del código.
-
Manejo de procesos asincrónicos : las promesas le permiten realizar una serie de operaciones asincrónicas en secuencia, y cada operación depende del resultado de la operación anterior. Esto permite una mejor organización del código asincrónico y lo hace más lógico.
-
Manejo de errores : las promesas le permiten detectar y manejar errores en operaciones encadenadas. Puede utilizar
.catch()
el método para detectar cualquier error en la cadena, proporcionando así un mejor mecanismo de manejo de errores. -
Ejecución paralela : con
Promise.all()
, puede ejecutar múltiples operaciones asincrónicas en paralelo y obtener los resultados cuando se completen todas. Esto puede mejorar el rendimiento en algunos casos.
Uso básico de Promesa:
El siguiente es un ejemplo simple de Promise que muestra cómo crear, manejar y usar objetos Promise:
javascriptCopiar código
// 创建一个 Promise,表示异步操作 const myPromise = new Promise((resolve, reject) => { setTimeout(() => { const randomNumber = Math.random(); if (randomNumber > 0.5) { resolve(randomNumber); // 操作成功完成 } else { reject(new Error("Random number is too small")); // 操作失败 } }, 1000); }); // 使用 Promise myPromise .then((fulfilledValue) => { console.log("Promise fulfilled with value:", fulfilledValue); }) .catch((error) => { console.error("Promise rejected with error:", error); });
En este ejemplo, puede cambiar al estado o myPromise
después de 1 segundo , entregando el resultado o error según corresponda.fulfilled
rejected
En resumen, Promise es un patrón poderoso para manejar operaciones asincrónicas, que puede ayudarlo a escribir código asincrónico con mayor claridad, manejar errores y controlar el flujo.