2014-10-30 4 views
-1

Я нашел код в javascript, который создает объект. Но я точно не знаю, что именно делает этот код.Переменная JavaScript с конвейером

Объяснение будет оценено.

+0

http://stackoverflow.com/a/476445/ – chridam

+0

'' || есть короткое замыкание или. Код проверяет, является ли true. Если нет, то a присваивается пустой объект. – A1rPun

ответ

0

Посмотрите на двойную трубу как на логический ИЛИ.

var a = a OR { }; 

которые в значительной степени означает, что если a имеет truthy значения Javascript (перо) назначить a к a, в противном случае назначить новую объектную ссылку.

0

Она устанавливает в качестве значения переменной a либо:

  • копию текущего значения a, если a существует и примитивный тип

  • ссылку на текущее значение a, если a существует и является сложным типом

  • новый объект, если a не существует

0

если a является undefined или false набор a = {}

2

Первый шаг здесь, чтобы понять, что это действительно становится этим:

var a; 
a = a || {}; 

... и что var a является не оп если переменная a уже была объявлена ​​ранее в текущей области.

Итак, первая часть (var a) гарантирует, что a существует как переменная, если ее еще нет.

Вторая часть затем говорит: Если a имеет «правдивое» значение, сохраните его (не меняйте его). Если он имеет значение «ложь», назначьте {} на номер a.

Значения "falsey" являются 0, NaN, null, undefined, "", и конечно же, false. Истинные значения - все остальные.

Это работает из-за JavaScript's curiously-powerful || (logical OR) operator, который, в отличие от некоторых других языков, не всегда приводит к true или false; вместо этого он оценивает левый операнд и, если это правда, принимает это значение как результат; в противном случае он оценивает правый операнд и использует его в качестве результата.

0

его, как обычный, если условие (кажется тройной оператор) проверка булевы и присвоения значения

Смежные вопросы