JavaScript Nehronical

Nachdem ich diese Übersetzung des Artikels zum Aprilscherz über JavaScript gelesen hatte , war ich überrascht, an welchen kleinen Dingen die Leute etwas auszusetzen haben. Und das Problem liegt nicht im Artikel selbst, nicht in Memes und Witzen über diese Sprache, sondern in der Tatsache, dass jemand neironisch behauptet, JavaScript sei eine schlechte Programmiersprache. Aber was ist, wenn Sie versuchen, ihn zu verstehen?


Beantworten Sie die Frage, wenn Sie auf JS entwickeln, was genau? Vielleicht arbeiten Sie an FrontEnd, vielleicht entwickeln Sie eine kleine BackEnd-Anwendung auf nodejs, oder vielleicht sind Sie Entwickler in einer Bank, in der die gesamte Software darauf geschrieben ist? Wenn es im dritten Fall um Sie geht, haben Sie sich höchstwahrscheinlich irgendwo geirrt.


Das Problem ist, dass keine einzige Programmiersprache ein Allheilmittel für die Verwendung verschiedener PLs zum Erreichen bestimmter Ziele werden kann. Aber aus irgendeinem Grund glaubt immer noch jemand, dass eine Sprache alle existierenden ersetzen, universell werden und im Allgemeinen die ganze Welt retten wird. Aber normalerweise werden Werkzeuge erstellt, um bestimmte Probleme zu lösen (obwohl das Wort „spezifisch“ ein ziemlich umfangreiches Spektrum dieser Aufgaben umfassen kann), und selbst ein Schweizer Messer wird nicht alle Ihre Probleme lösen.


JavaScript erledigt die Aufgaben, für die es am häufigsten verwendet wird, gut. Und die meisten der losen Fälle, die im obigen Artikel berücksichtigt wurden, sind kugelförmige Pferde im luftleeren Raum und werden einfach nicht in der realen Entwicklung verwendet.


Zunächst möchte ich als Beispiel das folgende Code-Snippet geben:


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