質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1686閲覧

javascriptの実行コンテキストについて

annderber

総合スコア98

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/12/26 10:14

お世話になります。

現在、オライリーのシングルページWEBアプリケーションという本で学習中なのですが、
その文中に理解できない部分がありましたので、質問します。

function first() { var first_var = 'first'; second();//[1] } function second() {  var second_var = 'second'; console.log(first_var, second_var); } first();

本文では上記のようなコードの場合で[1]のsecond関数を呼び出すと、first関数の実行コンテキスト内に新しい実行コンテキストを生成する。そしてsecond関数はfirst関数の実行コンテキスト内で呼び出されているので、first関数内の実行コンテキストの変数にアクセスできる。

という記載があるのですが、私は変数のスコープはそれを定義したコンテキストに依存すると考えていたので、ここの説明に混乱しています。実際に上記のコードではエラーがでます。
ただ、本文内では実際のスコープチェーンには上記の実行コンテキストとは微妙な違いがあると記載されているので、実際の処理とは違うものとして説明しているのかもしれないですが、確証がもてません。

どなたかこのあたりの仕組みについて教えていただけますでしょうか。
同様の本をお持ちの方向けにですが、上記の記載はp39あたりにあります。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

私は変数のスコープはそれを定義したコンテキストに依存すると考えていたので、

その認識に間違いはないと思います。
事実、ご掲示のコードでは、変数 first_var 参照時に ReferenceError になります。

JavaScript

1console.log(first_var, second_var); // ReferenceError: first_var is not defined

Re: annderber さん

投稿2017/12/26 10:24

編集2017/12/26 10:28
think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

annderber

2017/12/27 00:43

コメントありがとうございます。 defghi1977さんのコメントにありましたサイトの情報も確認しまして、 実際のjavascriptエンジンの処理とは違うものとして考えることにしました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問