javascript - Does angular compute conditionals incorrectly? -


according laws of conditional probability, statement

s1 && s2 

will never true if s1 false. however, in angular, not alaways true.

in html have angular expression:

ng-if="file.nodes" 

file object has node property, , if does, array. angular expression "file.nodes" evaluates false if array exists empty (this problematic js evaluates empty arrays true if statements). however:

ng-if="file.nodes && (file.nodes.length == 0 || true)" 

will evaluated true if array empty. in situation, angular seems not inconsistent js, (or laws of conditional probability). correct in believing bug? since seems egregious if is.

some things know 1) in js empty array evaluates "true" 2) || evaluate true if either side of evaluates true 3) && requires both left , right side evaluate true evaluate true

file.nodes = []  file.nodes && (file.nodes.length == 0 || true) // true 

because in js empty array evaluates true (left side true, need right), , right side looks inside parens , sees length 0 doesnt need check right because evaluates true if left side true. && has found true on left , on right.

//next example file.nodes = [1,2,3] file.nodes && (file.nodes.length == 0 || true) 

left side returns true because js returns true non-empty array, right side looks inside parens , see left expression false, checks right side of it's ||, true, have true && true.

looks ng-if never return false if files.nodes has array inside =)

http://plnkr.co/edit/r2jo779q0evmpnynkmjd?p=preview


Popular posts from this blog