Opera での with の挙動
var foo = {
bar : "bar"
};
(function () {
with (foo) {
alert("normal+"+bar);
function baz () {
alert("function def."+bar); // opera だと reference error
}
baz();
(function () {
alert("function exp."+bar); // <del>opera だと reference error</del>
})();
}
})();Fx と Safari では大丈夫。これは Opera のバグっぽい? (Opera 9.24, 9.50 Beta 4591)
同じくスコープチェインをいじる try/catch は大丈夫だ。with だけか
(function () {
try {
throw "hello";
} catch (foo) {
alert(foo);
(function () {
alert(foo);
})();
}
})();(Opera, Safari, Fx でちゃんとできる)
関数式のほうは勘違いでした。関数宣言のほうだけだめです……