JavaScript Nehronical

Après avoir lu cette traduction de l'article de la Journée du poisson d'avril sur JavaScript, j'ai été surpris des petites choses que les gens peuvent trouver à redire. Et le problème ne réside pas dans l'article lui-même, pas dans les mèmes et les blagues sur ce langage, mais dans le fait que quelqu'un prétend de façon irréfléchie que JavaScript est un mauvais langage de programmation. Mais que faire si vous essayez de le comprendre?


Répondez à la question, si vous développez sur JS, alors quoi exactement? Peut-être que vous travaillez sur FrontEnd, que vous développez une petite application BackEnd sur nodejs, ou que vous êtes développeur dans une banque où tous les logiciels sont écrits dessus? Si le troisième cas vous concerne, vous vous êtes probablement trompé quelque part.


Le problème est que pas un seul langage de programmation ne peut devenir la panacée pour utiliser différents PL pour atteindre certains objectifs. Mais pour une raison quelconque, quelqu'un croit toujours qu'une langue remplacera toutes les langues existantes, deviendra universelle et sauvera généralement le monde entier. Mais généralement, des outils sont créés pour résoudre des problèmes spécifiques (même si le mot «spécifique» peut inclure une gamme assez étendue de ces mêmes tâches), et même un couteau suisse ne résoudra pas tous vos problèmes.


JavaScript fait un bon travail des tâches pour lesquelles il est le plus souvent utilisé. Et la plupart des cas lâches qui ont été considérés dans l'article ci-dessus sont des chevaux sphériques dans le vide et ne seront tout simplement pas utilisés dans le développement réel.


Tout d'abord, je voudrais donner l'exemple de l'extrait de code suivant:


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