$ irb
irb(main):001:0> foo
NameError: undefined local variable or method `foo' for main:Object
from (irb):1
from /Users/justinwiley/.rbenv/versions/2.1.2/bin/irb:11:in `<main>'
これまでのところ、「foo」は未定義です。
irb(main):002:0> if false
irb(main):003:1> foo = 1
irb(main):004:1> end
=> nil
foo はまだ定義されていないはずですが...
irb(main):005:0> foo
=> nil
シンボルテーブルに存在しますか?if ブランチのロジックには決して到達してはならないので、突然 nil になるのではなく、foo が未定義のままであるべきだと思いますか?