2016-06-29 2 views
-1

var results = query? self.states.filter (createFilterFor (query)) : self.states, latent;Für eckige md-Autocomplete konnte ich die folgende Zeile nicht verstehen, kann jemand erklären

Hier ist der Link https://material.angularjs.org/latest/demo/autocomplete

+0

Gibt es etwas bestimmtes, das Sie nicht verstehen? Es ist eine ternäre Operation, die den Wert der Ergebnisse festlegt, sie filtert die Ergebnisse, wenn die Abfrage beendet wird, und gibt einfach die aktuellen ungefilterten Zustände zurück, wenn die Abfrage nicht gesetzt ist und setzt die Variable auf nicht definiert zurück. –

+0

Danke für die Erklärung. Ich kenne den ternären Operator. Aber mir war nicht klar, wie das Komma für diese Linie ins Bild gekommen ist. Kannst du etwas Licht darauf werfen? – user1835326

Antwort

0

Var DEFFERED gesetzt ist jedes Mal unabhängig vom Ergebnis des ternären funciton. Ich habe ein paar Tests in der Konsole gemacht, um das zu beweisen.

//Set ternary condition variable. 
var test = true; 
undefined 
//check to see if newVal is set to anything, it returns an error because the variable doesn't exist yet. 
newVal 
VM1128:1 Uncaught ReferenceError: newVal is not defined(…)(anonymous function) @ VM1128:1 
//Try the ternary operation, it returns true. 
var ans = test ? true: false, newVal; 
undefined 
//Was the newVal var created? YES. 
newVal 
undefined 
//Try setting it to a value. 
var ans = test ? true: false, newVal = 50; 
undefined 
newVal 
50 
//And if the ternary operation returns false? 
var test = false; 
undefined 
var ans = test ? true: false, newVal = 3; 
undefined 
newVal 
3 
Verwandte Themen