Ich versuche, das folgende if-else wie folgt in die ternäre Operatordarstellung in Javascript umzuwandeln
var x = 2;
if (x === 2) {alert("2");}
else
{ //do nothing}
Aber wenn ich das mache:
(t==2)?(alert("1")):();
Chrome löst einen SyntaxError aus.
Meine Frage ist - wie man einen ternären Operator in Javascript mit einem leeren "else" -Zweig hat - d. H. Den Teil, der nach ":" kommt. Ist dies auch zulässig? Verwenden Sie einen ternären Operator in Javascript, um Anweisungen auszuführen. Führen Sie KEINE Zuweisungen durch.
Außerdem: Der obige Code war nur ein Basisfall. Ich versuche tatsächlich, alle DOM-Elemente der Seite als Array (mit dem Namen all2) abzurufen und dann nur diese Elemente einem anderen Array (nur mit dem Namen aufgerufen) hinzuzufügen, wenn sie Klassennamen ungleich Null haben. Hier ist mein Code:
all2.forEach(function(e){ e.getAttribute("class") ? (only.push(e.getAttribute("class"))) : (); });
Wenn ich den dritten Operanden leer lasse, wird ein Syntaxfehler ausgegeben. Das Übergeben einer Null funktioniert
6 Antworten
Antwort auf Ihre eigentliche Frage in den Kommentaren:
all2.forEach(function (e) {
e.getAttribute("class") && only.push(e.getAttribute("class"));
});
Sie haben viele nutzlose Klammern gesetzt, und der beste NULL-Wert in js ist undefined
.
document.getElementById('btn-ok').onclick = function(){
var val = document.getElementById('txt-val').value;
val == 2 ? alert(val) : undefined;
}
<input id="txt-val" type="number" />
<button type="button" id="btn-ok">Ok</button>
Die Verwendung einer einzeiligen if
Anweisung ist jedoch besser
if(value === 2) alert(value);
In diesem Fall müssen Sie den ternären Operator nicht verwenden. Der ternäre Operator erfordert ein drittes Argument.
Bedingung ? Ausdruck1: Ausdruck2
Lokki unter Bedingter (ternärer) Operator
Sie können die if-Anweisung
if ( t == 2 ) alert(1);
Sie haben ein paar Möglichkeiten, dies in einer Zeile zu tun:
Option1 - Noop-Funktion
Stellen Sie eine globale Noop-Funktion ein:
function noop(){}
(t==2)?(alert("1")):(noop());
Option2 - && Operator
Wenn Sie den Operator && verwenden, werden Operanden nur ausgewertet, wenn die vorherigen wahr sind, sodass Sie Folgendes schreiben können:
(t==2) && alert("1");
Wenn Sie beispielsweise ein Array haben, auf das Sie pushen möchten, können Sie testen, ob es vorher nicht null ist:
arr && arr.push(obj)
NEIN, Sie können kein leeres anderes haben, verwenden Sie besser nicht den ternären Operator, es erfordert ein drittes Argument. Gehen Sie mit einfachen wenn Bedingung.
if(t==2) alert("2");
Mach das :
(t==2)?(alert("1")):null;
Sie können null durch einen Ausdruck ersetzen, der keine Nebenwirkungen hat. () ist kein gültiger Ausdruck.