为什么nil && false
返回nil
时false && nil
返回false
?
我在nil ||中读到了最佳答案 假和假|| 在红宝石中没有.在我看来,这两个nil
和false
评估为falsy价值,但为什么这两个表达式返回的值不同?
规则很简单:&&
如果它是假的,则返回它的第一个参数.否则,它会评估并返回其第二个参数.
所以
nil && false
和
false && nil
在这两种情况下,第一个参数都是假的.(nil
并且false
是评估falsy的唯一两个值),因此表达式的结果是第一个参数.
第二个参数也恰好是假的事实并不重要.实际上,由于短路,第二个参数未被评估.