JavaScript Nehronical

Después de leer esta traducción del artículo del Día de los Inocentes en JavaScript, me sorprendió las pequeñas cosas con las que la gente puede encontrar fallas. Y el problema no está en el artículo en sí, no en los memes y las bromas sobre este lenguaje, sino en el hecho de que alguien afirma neironicamente que JavaScript es un mal lenguaje de programación. Pero, ¿y si tratas de entenderlo?


Responda la pregunta, si está desarrollando en JS, ¿qué exactamente? ¿Tal vez está trabajando en FrontEnd, tal vez está desarrollando una pequeña aplicación BackEnd en nodejs, o tal vez es un desarrollador en un banco donde está escrito todo el software? Si el tercer caso es sobre usted, lo más probable es que se haya equivocado en alguna parte.


El problema es que ni un solo lenguaje de programación puede convertirse en una panacea para usar diferentes lenguajes para lograr ciertos objetivos. Pero por alguna razón, alguien todavía cree que algún lenguaje reemplazará a todos los existentes, se volverá universal y generalmente salvará al mundo entero. Pero, por lo general, las herramientas se crean para resolver problemas específicos (aunque la palabra "específico" puede incluir un rango bastante extenso de estas mismas tareas), e incluso un cuchillo suizo no resolverá todos sus problemas.


JavaScript hace un buen trabajo en las tareas para las que se usa con mayor frecuencia. Y la mayoría de los casos sueltos que se consideraron en el artículo anterior son caballos esféricos en el vacío y simplemente no se utilizarán en el desarrollo real.


En primer lugar, me gustaría dar el siguiente fragmento de código como ejemplo:


const x={
  i: 1,
  toString: function(){
    return this.i++;
  }
}

if(x==1 && x==2 && x==3){
  document.write("This will be printed!")
}

, . — «?!» « ?». . . JavaScript — . — (===) (==). , . () . - `x == 1 && x == 2 && x == 3` - , , :


public class JavaScript {
	public static void main(String[] args) {
		AnonymousObject x = new AnonymousObject(1);

		if (x.equals(new AnonymousObject(1)) && x.equals(new AnonymousObject(2)) && x.equals(new AnonymousObject(3))) {
			System.out.println("JavaScript == Java // true");
		}
	}
}

class AnonymousObject {
	public int i;

	public AnonymousObject(int i) {
		this.i = i;
	}

	public boolean equals(AnonymousObject that) {
		return this.i++ == that.i;
	}
}

- .equals(), .toString(), , .toString() , . JS , Java .


.sort(), :


[-2, -7, 0.0000001, 0.0000000006, 6, 10].sort()
// [-2, -7, 10, 1e-7, 6, 6e-10]

:


[-2, -7, 0.0000001, 0.0000000006, 6, 10].sort((a, b) => a - b)
// [-7, -2, 6e-10, 1e-7, 6, 10]

- , < > , . , , . - , ?!


JS. , JavaScript- , - - , — web . , / / . - . , - . nodejs, : comlink, paralleljs, . , . .


, , . - , , . , :


: , , , .


UPD:

:


1. , , , , . , - , ,


2. , JS , . , . JS, , , - . JS , . ,


All Articles