The functional code isn't reassigning the same variable. The and/or have something that looks like an implicit return.