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 , . ,