¿Cuáles son algunos trucos geniales de JavaScript?

Hay tantos Solo tenga en cuenta que, si bien existen y parecen geniales, probablemente no necesiten verse en ningún sitio web de producción.


Intercambiar variables sin una variable temporal: [1]

  var a = 2
 var b = 4
 var b = [a, a = b] [0]

A menos que tenga un proyecto realmente gigante con decenas o cientos de miles de líneas de código, o una entrevista de código, no haga esto. Una variable temporal no es lo peor del mundo.


Hay locura por hacer con la coerción de tipo:

  var a = + [];  // a == 0
 var b = falso + verdadero;  // b == 1
 var c = verdadero + verdadero;  // c == 2
 var d =! 0;  // d == verdadero

Solo, por favor, no uses esto en ningún lado. Este tipo de coerción de tipo es útil para concursos de códigos y hackatones. Es absolutamente ilegible en cualquier otro lugar.

Puede escribir JavaScript real y funcional que use la coerción de tipo [2]. Es una cosa del mal. Las personas que ofuscan su JavaScript son malvados o imbéciles. No seas tampoco.


No tiene que declarar var en la parte superior de una función:

En lugar de

  función (a) {
 var b = 1;
 }

podrías escribir

  función (a, b) {
 b = 1;
 }

Esto se debe a que el nombre de la variable se declara como un argumento. Le ahorra tener que escribir mucho var, pero podría confundir a cualquiera que esté mirando su código. Podrían pensar que en realidad estás pasando estos argumentos a tu función en alguna parte.


Mi favorito: [math] .call () [/ math]

Supongamos que desea iterar sobre las propiedades de un objeto.

  var listitems = document.querySelectorAll ('li');

Tu podrías intentar:

  para (i = 0; i <listitems.length; i ++) {
 var listitem = listitems [i];
 // hacer cosas
 }

O bien, puede usar .call() simplemente forEach este chico malo:

  [] .forEach.call (listitems, function (listitem) {
 //hacer cosas
 })

call() simplemente te permite aplicar tu propio this . Entonces, en el ejemplo anterior, en lugar de una matriz vacía como this , estás usando listitems , en su lugar.

[editar]

No puedo evitarlo Un ejemplo más con .call()

Digamos que quieres que inviertas una cuerda. Bueno, invertir cosas es cosa de matrices. Entonces, ¿por qué no tomar el poder mágico de una matriz y llamarlo en una cadena?

  var hey = 'hola mundo';
 var yeh = [] .reverse.call (hey.split ('')). join ('');  // "dlrow olleh"

call() es útil cuando desea utilizar métodos que generalmente no existen en las propiedades [3].

Notas al pie

[1] jed / 140bytes

[2] Página en korelogic.com

[3] Function.prototype.call ()

  // genera una matriz de 25 números aleatorios
 const xs = Array.from ({longitud: 25}). map (Math.random);

Array.from convierte un objeto tipo matriz en una matriz. Un objeto tiene forma de matriz si tiene una propiedad de longitud con un valor entero. Array.from ({length: 2}) devuelve una matriz que se ve así: [undefined, undefined].

Luego puede asignar esa matriz a una matriz diferente. map (Math.random) calles Math.random para cada elemento de la matriz original, pasando siempre el elemento de matriz original actual:

Math.random (indefinido); // Math.random ([undefined, undefined …] [0]);

Math.random (indefinido); // Math.random ([undefined, undefined …] [1]);

Por supuesto, Math.random () no usa el valor que se le pasa. Simplemente escupe un número aleatorio (o, más bien, pseudoaleatorio), y la función Array.prototype.map recopila todos esos números en una nueva matriz y devuelve esa nueva matriz.

¿Qué pasaría si quisiera generar una matriz como esta [0, 1, 2, 3, 4, 5, … 24]?

  const xs = Array.from ({longitud: 25}). map ((__, index) => index);

Puede ejecutar JavaScript arbitrario en cualquier página web escribiendo javascript:(function(){ /* your code */ })() en su barra de direcciones. A veces, cuando una página se comporta mal, como decirme que no puedo enviar un formulario sin completar un campo, simplemente lo corrijo iniciando por la fuerza el envío a través de un script, algo así como javascript:(function(){document.forms[1].submit();})() y presionando return.

More Interesting

¿Cómo hacer sonar una campana cuando un nuevo usuario visita su sitio de WordPress en tiempo real?

Facebook y Amazon (por ejemplo) están escritos en C ++. ¿Cómo puedo usar o implementar código C ++ en la página web?

¿Cómo podemos proporcionar un fondo y color personalizados a una página web en HTML?

¿Cuál es una buena manera de planificar su código antes de escribirlo?

Como estudiante de ECE, ¿debo aprender lenguajes de desarrollo web (HTML, CSS, JQuery) para conseguir un trabajo?

Nuestro objetivo es construir el frontend y el backend para un negocio de suscripción de producto como servicio. ¿Cuál es la mejor manera de usar las soluciones disponibles?

¿Por cuál debo ir?

¿Qué lenguaje de programación es el más adecuado para crear un sitio web de venta de entradas que implique la interacción entre el administrador y el usuario?

¿Cómo podemos agregar controles deslizantes y diferentes secciones en la página de inicio usando WordPress sin aprender WordPress desde cero?

¿Qué son los lenguajes de programación o desarrollo web nuevos y actuales?

Cómo pasar por un proyecto masivo de MVC existente

Cómo construir mi sitio viral

Cómo no sentirte como un fracaso cuando fuiste a una de las mejores escuelas y obtuviste una de las mejores pasantías, solo para ser un mal desarrollador al final

Cómo construir una tienda de múltiples proveedores en el mercado digital desde cero usando PHP y MYSQL

¿Qué campos de entrenamiento se centran en el desarrollo de aplicaciones web JavaScript de pila completa?