Подтвердить что ты не робот

Что означает синтаксис выражения && expression?

Что означает эта строка parent && (this.parent.next = this);? Просто похоже, что он сидит там, ничего не делая, а не выражение, обещание или что-то еще. Есть ли название для этого стиля кодирования?

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

Его в нескольких местах в этом файле анимации, на который я смотрю. Вот еще один пример. (!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;
4b9b3361

Ответ 1

Это сокращение для

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

Ответ 2

если parent - false, а не eject (this.parent.next = this), например:

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

Оценка короткого замыкания:

Как логические выражения оцениваются слева направо, называется оценкой "короткого замыкания",

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

его можно использовать для назначения переменных:

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