My understanding is that a while (or a valof) that doesn't assign to result is invalid.
If the condition is false before entering the loop then result would be 1 (its initial value)
if it helps and if I understand correctly, this would be the same algorithm expressed in scheme:
(define (fib n) (let loop ([i 1] [f 1] [pf 1]) (if (< i n) (loop (+ i 1) (+ f pf) f ) f )))
((let name args body) is essentially sugar for creating a function and calling it with some default args)