評価せずとも読んでいる

ボーッと貯まりに貯まった古いMLをだらだら読んだりするわけですが、これはメモがてら残しておきます。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/37434

  irb(main):001:0> p foo
  NameError: undefined local variable or method `foo' for main:Object
          from (irb):1
          from :0
  irb(main):002:0> if false
  irb(main):003:1>   foo = "foo"
  irb(main):004:1> end
  => nil
  irb(main):005:0> p foo
  nil
  => nil

パーザーの動きを考えれば自然な挙動ですが、直感的ではありませんでした。
「評価されてないから消しちゃえ」とかやると、バグが混入してしまいそうです。