5版はまだ読んでないがサイ本3版にこんな例があった。
var x = "global";
function f() {
var x = "local";
function g() { return x; }
}
alert(f.g()); // undefined
f();
alert(f.g()); // local
gのスコープチェーンはgのCallオブジェクト、fのCallオブジェクト、
グローバルオブジェクトとなるため、fが呼び出されていなくても
fのCallオブジェクトが参照されてしまう、とか書いてあった。
ただし、JavaScript 1.5(Firefox 1.0.8で確認)では2度目のf.g()も
undefinedを返したし、
ttps://bugzilla.mozilla.org/show_bug.cgi?id=293782 の修正によって、少なくともJavaScript 1.6以降ではf内で定義された
関数をfのプロパティとして参照できなくなった("g" in f == false)から、
そんな古い問題が5版にもなってまだ取り上げられているのかは知らない。
それにこの問題はJavaScript固有の問題であって、ECMAScript 3に
従うなら現在のJavaScriptと同様、f.gがundefinedになるはずだし。