2015-04-15 22 views
10

Che cosa significa questa riga parent && (this.parent.next = this);? Sembra proprio che sia seduto lì, senza fare nulla, non un'affermazione, una promessa o altro. Esiste un nome per questo stile di codifica?Che cosa significa espressione e sintassi di espressione?

var Particle = function(i, parent) 
{ 
    this.next = null; 
    this.parent = parent; 
    parent && (this.parent.next = this); 
    this.img = new Image(); 
    this.img.src = "http://www.dhteumeuleu.com/images/cloud_01.gif"; 
    this.speed = speed/this.radius; 
} 

Si trova in più posizioni in questo file di animazione che sto guardando. Ecco un altro esempio .. (!touch && document.setCapture) && document.setCapture();

this.down = function(e, touch) 
{ 
    e.preventDefault(); 
    var pointer = touch ? e.touches[0] : e; 
    (!touch && document.setCapture) && document.setCapture(); 
    this.pointer.x = pointer.clientX; 
    this.pointer.y = pointer.clientY; 
    this.pointer.isDown = true; 
+0

Vedi anche [cosa è‘x && foo()’?] (http://stackoverflow.com/q/6970346/1048572) e [È && statement() lo stesso di if () istruzione()?] (http://stackoverflow.com/q/126642/10/1048572) – Bergi

risposta

16

E 'una scorciatoia per

if (parent) { 
    this.parent.next = this 
} 
+2

A scorciatoia di manutenzione molto amichevole a quello. –

+4

non molto più corto – Legends

+0

Ancora fico, non lo sapevo. – Scott

7

se genitore è falsa, allora non essere espulso (this.parent.next = questo), ad esempio:

parent = false; 
parent && alert("not run"); 

Breve -Circuito Valutazione:

Come le espressioni logiche sono valutate da sinistra a destra, è denominato "sho rt-circuito" di valutazione,

variable && (anything); // anything is evaluated if variable = true. 
variable || (anything); // anything is evaluated if variable = false 

è possibile utilizzare per l'assegnazione di variabili:

var name = nametemp || "John Doe"; // assignment defaults if nametemp is false 
var name = isValid(person) && person.getName(); //assignement if person is valid 
Problemi correlati