true || undefined // true
Поясните пожалуйста почему?
var a=false var b=true var c=undefined console.log((a || c)) //undefined console.log((b || c))//true |
|
Это приводит к
console.log((a || c)!=(c || a)) //true |
Цитата:
|
Цитата:
а в случае console.log((a || c)) // внезапно undefined даже не false! Это просто фича такая:) |
Я к чему это написал, что правильнее было бы сделать оба выражения учитывающих только операнды со значением , либо если один из операндов undefined, то и всё выражение тоже undefined
|
Цитата:
Правильно придерживаться спецификации языка где операции над операндами совершаются согласно описанию а приоритет операций согласно таблице приоритетов. То что ты считаешь правильным поломает логику работы языка и приведет к различному поведению в различных ситуациях. |
Нельзя поломать то, что уже поломано. И именно в булевых выражениях.
1+ undefined и undefined+1 даст одно и то же NaN. С точки зрения логики ассоциативность в языке не должна влиять на результат булевых выражений . Так что не чушь. |
Ну так и используй плюс.
У логического или другой алгоритм работы. Именно по этому плюс и возвращает NaN А логическое "или" первое истинное значение из операндов. |
Цитата:
|
Часовой пояс GMT +3, время: 08:34. |