Assuming we’ve all read, still might be some surprises:

No surprise, throws an Error.

No surprise, logs undefined (no error)

Surprise – *both* log undefined, no error is thrown, even on the first line before bob is “initialized”.

Surprise, Logs false.

Surprise, logs true, despite it being functionally equivalent to the previous block.

One big takeaway for me is to always initialize prototype values to something that makes sense (null for objects, arrays and instances, empty strings for strings, false for booleans, maybe 0 for numbers).