2015-01-20 5 views
0

Я знаю, что || означает OR это легко. Но недавно я увидел этот фрагмент кода:Что означает "||" означает в javascript (кроме OR)?

var myArray = [['activity', 'none'] , 
       ['movies', 'activity'], 
       ['theater','activity'], 
       ['drama', 'movies'], 
       ['comedy', 'movies'],  
       ['puppet', 'theater'], 
       ]; 

var nodes = {}; 
for (var i in myArray) { 
    var child = myArray[i][0]; 
    var parent = myArray[i][1]; 
    var children = nodes[parent] || []; // what is this ? 
    children.push(child); 
    nodes[parent] = children; 
} 

alert(nodes); 

Я смущен. children выглядит как массив, потому что он имеет метод .push. Но var children = nodes[parent] || []; указывает на: children является булевым. ,

Также, как можно сравнить объект и пустой массив? var children = nodes[parent] || [];

Благодаря

+1

Это [логический 'ИЛИ'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Logical_OR_%28.7C.7C%29) там;). – Teemu

+2

вы можете использовать '||' для установки значения по умолчанию; в этом случае пустой массив ('[]') является значением по умолчанию для 'children', если' nodes [parent] 'является ложным. – Don

+1

См. Http://stackoverflow.com/questions/1011317/replace-a-value-if-null-or-undefined-in-javascript – Pete

ответ

3

Если nodes[parent] пуст или обнулить пустой массив назначаются дети с переменными (для не неоспоримого нуля).

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