2015-04-15 23 views
10

Bu hat parent && (this.parent.next = this); ne anlama geliyor? Sadece orada oturmuş gibi görünüyor, hiçbir şey yapmıyor, bir if ifadesi ya da bir söz ya da bir şey değil. Bu kodlama tarzı için bir isim var mı?İfade && ifade sözdizimi ne anlama geliyor?

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; 
} 

Bu animasyon dosyasında birden çok yerde arıyorum.

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

Kısa: ebeveyn sonra (this.parent.next = this), örnek çıkarılamadı yanlışsa

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

bakınız ne] değerlendirilmesi,

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

bu değişkenlerin atama için kullanmak mümkündür’/q/6970346/1048572) ve [Boole ifadesi> &&() ifadesi, () ifadesi() (http://stackoverflow.com/q/12664230/1048572) – Bergi

cevap

16

O var steno -Circuit Değerlendirme:

Mantıksal ifadeler soldan sağa değerlendirildiğinde, "sho (: "[? X && fan()‘http://stackoverflow.com rt devre

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

A ile aynı mıdır? Bunun için çok bakım dostu kısayol. –

+4

gerçekten çok daha kısa değil – Legends

+0

Hala havalı, bundan haberin yoktu. – Scott

7

için Başka bir örnek daha .. (!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;