JavaScript Nehronical

Depois de ler esta tradução do artigo do April Fools 'Day em JavaScript, fiquei surpreso com as pequenas coisas que as pessoas podem encontrar falhas. E o problema nĂŁo estĂĄ no artigo em si, nem nos memes e piadas sobre essa linguagem, mas no fato de que alguĂ©m afirma neironicamente que o JavaScript Ă© uma linguagem de programação ruim. Mas e se vocĂȘ tentar entendĂȘ-lo?


Responda Ă  pergunta, se vocĂȘ estiver desenvolvendo JS, o que exatamente? Talvez vocĂȘ esteja trabalhando no FrontEnd, talvez esteja desenvolvendo um pequeno aplicativo BackEnd no nodejs ou talvez seja um desenvolvedor de um banco onde todo o software estĂĄ escrito nele. Se o terceiro caso Ă© sobre vocĂȘ, provavelmente vocĂȘ se enganou em algum lugar.


O problema Ă© que nem uma Ășnica linguagem de programação pode se tornar uma panacĂ©ia para o uso de diferentes PLs para atingir determinados objetivos. Mas, por alguma razĂŁo, alguĂ©m ainda acredita que alguma linguagem substituirĂĄ todas as existentes, se tornarĂĄ universal e geralmente salvarĂĄ o mundo inteiro. Mas geralmente sĂŁo criadas ferramentas para resolver problemas especĂ­ficos (mesmo que a palavra "especĂ­fico" possa incluir uma gama bastante extensa dessas mesmas tarefas), e mesmo uma faca suíça nĂŁo resolverĂĄ todos os seus problemas.


O JavaScript faz um bom trabalho das tarefas para as quais Ă© usado com mais frequĂȘncia. E a maioria dos casos soltos que foram considerados no artigo acima sĂŁo cavalos esfĂ©ricos no vĂĄcuo e simplesmente nĂŁo serĂŁo usados ​​no desenvolvimento real.


Antes de mais, gostaria de fornecer o seguinte snippet de cĂłdigo como exemplo:


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