ここから本文です

new functionして、thisで宣言した関数は、レキシカルスコープにアクセスできます...

S.F.さん

2013/10/722:27:19

new functionして、thisで宣言した関数は、レキシカルスコープにアクセスできます。
しかし、外部から直接アクセスはできません。

これは一体なぜでしょう。

補足さらにグローバルスコープで
var b=a.getValue;
とし、
b()としても、結果は"x:lexical, y:local"となりました。

しかし、
var c=eval("("+a.getValue.toString()+")")
とし、
c()とすると、結果は"x:global, y:local"となりました。

new function,レキシカルスコープ,関数,アクセス,外部,分かりやすいスコープチェーン,サイト

閲覧数:
284
回答数:
1

違反報告

ベストアンサーに選ばれた回答

ris********さん

2013/10/723:49:49

なぜでしょうと申されましても、そういうものだからとしか……。むしろ、どうなることを期待していたのかを書いて頂ければ、どこで誤解なさっているかが分かったかもしれませんのに。

JavaScript にはスコープチェーンという仕組みがあります。で、ここでクドクド説明するより以下のサイトを読んだ方がはるかに良いと思います。
http://web.archive.org/web/20061021223046/http://www.hawk.34sp.com/...

すでに閉鎖されたサイトを掘り起こすのは気が引けますが、でもこれ以上に正確かつ分かりやすいスコープチェーンの説明を私は知りません。

質問した人からのコメント

2013/10/8 00:55:41

ありがとうございます。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる