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

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

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

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

Q&A

解決済

2回答

1051閲覧

letやconstで定義した変数を持っているオブジェクトを調べる方法

H40831

総合スコア973

JavaScript

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

0グッド

3クリップ

投稿2020/07/28 16:23

編集2020/07/28 17:42

知識が足らず、適切な表現方法がよくわからず曖昧な質問文になってしまいすみません。

JavaScript:

1console.log(this); //window 2 3let ooo = 'ooo'; 4const xxx = 'xxx';

上記のような方法で定義した変数oooxxxはグローバル変数にはならないということは理解できたのですが、
では、どこに定義されているのか(どのオブジェクトが持っているのか)調べるにはどうしたらよいのでしょうか??

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

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

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

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

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

hentaiman

2020/07/28 16:36

エディタ上で単語検索するとか以外で何か無いかって事?vscode等で自動で見つけられないかって事?それともブラウザ上でさっと調べる方法無いか?
H40831

2020/07/28 16:42 編集

コードの何行目で定義されているのかを知りたいという意味ではなくて、 上記の定義した変数を、どのオブジェクトが持っているのかを知りたいということです。
YakumoSaki

2020/07/28 17:06

このjavascriptは、ブラウザ上で動作する方か、node.jsで動く方かを追記いただけると答えやすいかと。 この質問のJavascript部だけを見ると、 変数oooとxxxはグローバル変数になると思うのですが
H40831

2020/07/28 17:26 編集

ES6自体の機能の話なので、ブラウザ上でもnode.jsでもどちらでも知る方法がわかれば一番うれしいです。 ですが、質問文のコードはブラウザ上でやってみたときのサンプルです。 質問文のコードを実行した状態で window.ooo; を参照しようとすると undefined が帰ってくるので、グローバル変数ではないことは確認済みです。 ( var ooo = 'ooo'; や ooo = 'ooo'; であれば window.ooo; で参照できます。 ) これについては、letやconstのスコープについて調べたらいくらでも出てくるのでわかるのですが、 肝心の「じゃあどのオブジェクトが持っているのか」がわからないです。
m.ts10806

2020/07/28 20:28

質問もコメントも意味が不明ですね。 「Windowが持ってないからグローバルではない」というのは根拠に乏しいです。 グローバルスコープに定義されたらグローバル変数ですよ。
H40831

2020/07/29 00:07 編集

質問文でも申し上げた通り、適切な表現がわからないので教えていただけたら幸いです。 ブラウザ上のJavaScriptのグローバルオブジェクトはwindowなので、windowが持つ変数でなければそれはグローバル変数じゃないと言っていいのかなと思って発言しましたが、 もっと適切な表現があるんだろうなあと感じながらの発言でした。
m.ts10806

2020/07/29 00:25

でしたら、「グローバル変数にならない」と決めつけた表現は改めたほうが良いかと。
m.ts10806

2020/07/29 00:28 編集

「グローバル変数になると思うのですが」に対しても「windowから見れないからグローバル変数ではない」根拠がかなり弱いですし出典もなし。出典を提示しないまま自身の思い込みを正しいと進めようとされてるように見えたための指摘です。
H40831

2020/07/29 00:47

確認させていただきたいのですが、 「windowから見れない」と「グローバル変数ではない」をイコールにするなという意味ですよね? 適切な表現がわからないと前置きしているのに「自身の思い込みを正しいと進めようとされてる」と思われる理由がわかりません。 そうじゃないことを断るための前置きのつもりだったのですが
hentaiman

2020/07/29 01:08

人それぞれ質問の認識が違うんだな 自分はobject.getScope()みたいなことをやりたい的な質問かと思ったけど、他の人のコメントや回答見ると受け取り方がバラバラだもんな しかもそれがベストアンサーとして選ばれているんだから、それを見てやっと質問者の意図を理解したよ
H40831

2020/07/29 01:14 編集

まったく理解できていない部分についての質問なので、 誤解を与えてしまうような質問文になってしまって申し訳ありません。 ただベストアンサーだと、直接アクセスできないものとのことなので、 スコープを取得するような方法を実行しても、エラーかなにかになるのかと思ったのですが、 hentaimanさん的にはどういう風に思われてたのでしょうか?
guest

回答2

0

ベストアンサー

どこに定義されているのか(どのオブジェクトが持っているのか)

言語仕様上は、Environment Recordという、JavaScriptコードからは直接アクセスできないものに設定されます。

投稿2020/07/28 22:04

maisumakun

総合スコア145184

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

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

H40831

2020/07/28 23:57

はじめて聞く概念です! 詳しく調べてみたいと思います、 ありがとうございます!
guest

0

はじめて聞く概念です!
詳しく調べてみたいと思います、
ありがとうございます!

ベストアンサーへコメントしたつもりが回答してしまいました。

投稿2020/07/28 23:54

編集2020/07/29 00:01
H40831

総合スコア973

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問