この件に関する他の投稿を読んでみましたが、まだ運がありません。以下のコードでは、f2() が f1() で定義された var にアクセスできない理由を示しています。var "name" は関数 f2() に対してグローバルではありませんか? f2() は var "name" を見るべきではありませんか?
function f1() {
var name = "david";
function f2() {
document.writeln(name);
}
document.writeln(name);
}
f2(); // does not write out "david".