Unter Berücksichtigung der Best Practices können wir einen zweifachen unären Operator verwenden! in JavaScript?

8

Zu meinem Verständnis führt der unäre Operator ! implizite Typumwandlungen durch und wird manchmal für die Typumwandlung verwendet.

Im Grunde konvertiert der Operator ! seinen Operanden in einen booleschen Wert und negiert ihn.

Jetzt:

%Vor%

Tatsächlich:

%Vor%

Ich gehe also davon aus, dass sowohl !!x als auch Boolean(x) die gleiche Aktion ausführen.

Ich würde gerne wissen:

  • Kennen Sie irgendwelche Vorbehalte, die meine Annahmen falsch machen?
  • Welcher Weg sollte im Hinblick auf eine gute Praxis bevorzugt werden?
  • Kennen Sie Unterschiede zwischen verschiedenen ECMAScript-Versionen oder Browser-Anbietern?
GibboK 01.07.2015, 07:45
quelle

2 Antworten

4
  • Ihre Annahmen sind richtig. Genau so funktioniert es und ich bin es nicht bewusst, dass bei der Verwendung besondere Vorsicht geboten ist.

  • Wenn wir von guter Praxis sprechen, werden Sie wahrscheinlich so viele Leute haben unterstützt die schnelle 'n "dreckige" !! -Weg wie es gibt, wer würde befürworte die Verwendung der Funktion Boolean ; Aus meiner Erfahrung scheint dies jedoch der Fall zu sein !! ist viel häufiger im Bibliothekscode (sieh dir die jQuery-Quelle an, Sie haben eine Menge Dinge wie return !!locked; ). IMHO ist es ausreichend erkennbar, ohne die Lesbarkeit des Codes zu beeinträchtigen.

  • Dies ist in ECMAScript schon lange Standard; Ich kann nicht für alte Versionen von Internet Explorer sprechen (vor IE 8), aber Sie können ziemlich sicher sein, dass sich alle modernen Browser in diesem Fall gleich verhalten.

Nützliche Hinweise im Standard:

Coffee Ninja 01.07.2015, 08:43
quelle
1
  

Kennen Sie irgendwelche Vorbehalte, die meine Annahmen falsch machen?

Ihre Annahme ist richtig. Sowohl Boolean function als auch !! haben dieselbe Funktionalität.

  

Welcher Weg sollte im Hinblick auf eine gute Praxis bevorzugt werden?

Ich empfehle, den unären Operator zweimal zu verwenden, weil er mindestens zweimal schneller ist als die Verwendung von Boolean mit 100.000 Iterationen

JS Geigenverbindung: Ссылка

  

Kennen Sie Unterschiede zwischen verschiedenen ECMAScript?   Versionen oder Browser-Anbieter?

Boolesche und unäre Operatoren sind aus JavaScript 1.0 implementiert und sollten daher in allen Browsern verfügbar sein, die JavaScript unterstützen.

    
Kira 01.07.2015 09:08
quelle

Tags und Links