Difference between or and || when setting variables
I was under the impression that ||
and or
were synonymous.
Setting variable with or
does not hold value; why?
>> test = nil or true
=> true
>> test
=> nil
>> test = false or true
=> true
>> test
=> false
Work开发者_JS百科s 'as expected' with ||
>> test = nil || true
=> true
>> test
=> true
or
has lower precedence than =
.
test = nil or true
is the same as
(test = nil) or true
which is true
, while setting test
to nil
.
||
has higher precedence than =
.
test = nil || true
is the same as
test = (nil || true)
which is true
, while setting test
to true
.
Same between and
and &&
. I was once bited by this gotcha, then I realize that although and
is more readable than &&
, that does not mean it always more suitable.
>> f = true && false
=> false
>> f
=> false
>> f = true and false
=> false
>> f
=> true
>>
精彩评论