2016-07-20 16 views
0

Ich habe eine Spiel-Engine namens Panda.js gelesen. Es war ein Verfahren, in dem Kern zu überprüfen, ob Vollbild vom Browser unterstützt oder nicht, aber es verstand nicht, diesen Code:Was bedeutet es, dieselbe Bedingung zweimal mit if (cond) esle if (sameCond) zu überprüfen?

if (this.system.canvas.requestFullscreen) 
    this.system.canvas.requestFullscreen(); 
else if (this.system.canvas.requestFullScreen) 
    this.system.canvas.requestFullScreen(); 
+0

Wahrscheinlich ist dies ein Fehler. – Chamindu

+0

Sieht aus wie ein Fehler für mich, ich kann nicht sehen, warum der zweite Block jemals ausgeführt werden würde, es sei denn, es ist eine Art Problemumgehung, wo der erste Aufruf von this.system.canvas.requestFullscreen in einigen Browsern falsch ist, aber es auslöst in nachfolgenden Aufrufen existieren. –

Antwort

-1

Im Allgemeinen würden Sie nicht genau die gleiche Bedingung in einem if verwenden und else. Wenn die Bedingung nicht das Ergebnis nachfolgender Aufrufe ändert - wohl eine schlechte Design-Wahl -, wird der else-Block nie ausgeführt und die Bedingung wird zwei Mal unnötig getestet, wenn sie false auswertet.

Das heißt, @ Brendan ist richtig: Dieser Code hat nicht die gleichen Bedingungen. Siehe seine Antwort für Details.

4

Wenn Sie genau hinsehen, werden Sie sehen, dass sie nicht die gleiche Bedingung sind. Die zwei Methoden sind unterschiedlich, weil man Kapital ist und eins nicht. Ich nehme an, dass die Entwickler einen Kleinbuchstaben gemacht haben, um anzuzeigen, dass es nicht Vollbild und Kapital für den ganzen Bildschirm ist. Wie auch immer, es ist nicht die gleiche Bedingung.

if (this.system.canvas.requestFullscreen) 
    this.system.canvas.requestFullscreen(); 
else if (this.system.canvas.requestFullScreen) 
    this.system.canvas.requestFullScreen();` 

Der Bildschirm S in wechselt.

+1

Ich denke, sie waren Clients einer API, die sie der Hülle nicht sicher waren, dass die API-Funktion sein würde. Auf diese Weise testen sie, ob die Funktionen definiert sind, bevor sie aufgerufen werden. – acdcjunior

+1

Der Grund ist nicht damit zu tun, ob es Vollbild ist oder nicht, es liegt an [eine Einteilung im Namensstandard] (https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#Prefixing). –

+0

Vielen Dank für die Klarstellung, ich gebe es nur meine beste Schätzung. @PatrickRoberts – Brendan