Kurze JS-Aufgabe für Montag

Bild

Das wurde im Prozess des Studiums der Albträume von LexicalEnvironment und des allgemeinen Bildungsprogramms zum Thema "Warum funktioniert es so?" Geboren.


Die Aufgabe kam wirklich aus der wtfjs-Reihe, aber nach sorgfältiger Überlegung passt sie vollständig in die Logik der Sprache.


Also auf den Punkt gebracht:


Es gibt ein Modul module.js :


 // module.js function getRandomNumber() { return Math.floor(Math.random() * 100) } var a = 10; function b() { a = 100; return; function a() {} } b(); module.exports = getModule(); async function getModule() { return { a, get getterA() { return a }, x: ++a + ++a, rndA: a + getRandomNumber(), getA: function() { return this.a }, getArrowA: () => this.a, getRndA: () => a + getRandomNumber() } } 

Es wird aus der Datei index.js aufgerufen:


 // index.js a = 5; (async () => { let moduleObj1 = await require("./module") let moduleObj2 = await require("./module") console.log( ` ============================ m1Obj.a: | ${moduleObj1.a} m1Obj.getterA: | ${moduleObj1.getterA} m1Obj.x: | ${moduleObj1.x} m1Obj.getA: | ${moduleObj1.getA()} m1Obj.getArrowA: | ${moduleObj1.getArrowA()} m1Obj.rndA: | ${moduleObj1.rndA} m1Obj.getRndA: | ${moduleObj1.getRndA()} ============================ m2Obj.a: | ${moduleObj2.a} m2Obj.getterA: | ${moduleObj2.getterA} m2Obj.x: | ${moduleObj2.x} m2Obj.getA: | ${moduleObj2.getA()} m2Obj.getArrowA: | ${moduleObj2.getArrowA()} m2Obj.rndA: | ${moduleObj2.rndA} m2Obj.getRndA: | ${moduleObj2.getRndA()} ============================ a: | ${a} ============================` ) })() 

Die Frage ist eigentlich: Was wird in der Konsole angezeigt?


Die Antwort lautet:
  ============================ m1Obj.a: | 10 m1Obj.getterA: | 12 m1Obj.x: | 23 m1Obj.getA: | 10 m1Obj.getArrowA: | 5 m1Obj.rndA: |    12  111 m1Obj.getRndA: |    12  111 ============================ m2Obj.a: | 10 m2Obj.getterA: | 12 m2Obj.x: | 23 m2Obj.getA: | 10 m2Obj.getArrowA: | 5 m2Obj.rndA: |    12  111 m2Obj.getRndA: |    12  111 ============================ a: | 5 ============================ 

Source: https://habr.com/ru/post/de456436/


All Articles