知識が足らず、適切な表現方法がよくわからず曖昧な質問文になってしまいすみません。
JavaScript:
1console.log(this); //window 2 3let ooo = 'ooo'; 4const xxx = 'xxx';
上記のような方法で定義した変数ooo
とxxx
はグローバル変数にはならないということは理解できたのですが、
では、どこに定義されているのか(どのオブジェクトが持っているのか)調べるにはどうしたらよいのでしょうか??
エディタ上で単語検索するとか以外で何か無いかって事?vscode等で自動で見つけられないかって事?それともブラウザ上でさっと調べる方法無いか?
コードの何行目で定義されているのかを知りたいという意味ではなくて、
上記の定義した変数を、どのオブジェクトが持っているのかを知りたいということです。
このjavascriptは、ブラウザ上で動作する方か、node.jsで動く方かを追記いただけると答えやすいかと。
この質問のJavascript部だけを見ると、 変数oooとxxxはグローバル変数になると思うのですが
ES6自体の機能の話なので、ブラウザ上でもnode.jsでもどちらでも知る方法がわかれば一番うれしいです。
ですが、質問文のコードはブラウザ上でやってみたときのサンプルです。
質問文のコードを実行した状態で window.ooo; を参照しようとすると
undefined が帰ってくるので、グローバル変数ではないことは確認済みです。
( var ooo = 'ooo'; や ooo = 'ooo'; であれば window.ooo; で参照できます。 )
これについては、letやconstのスコープについて調べたらいくらでも出てくるのでわかるのですが、
肝心の「じゃあどのオブジェクトが持っているのか」がわからないです。
質問もコメントも意味が不明ですね。
「Windowが持ってないからグローバルではない」というのは根拠に乏しいです。
グローバルスコープに定義されたらグローバル変数ですよ。
質問文でも申し上げた通り、適切な表現がわからないので教えていただけたら幸いです。
ブラウザ上のJavaScriptのグローバルオブジェクトはwindowなので、windowが持つ変数でなければそれはグローバル変数じゃないと言っていいのかなと思って発言しましたが、
もっと適切な表現があるんだろうなあと感じながらの発言でした。
でしたら、「グローバル変数にならない」と決めつけた表現は改めたほうが良いかと。
「グローバル変数になると思うのですが」に対しても「windowから見れないからグローバル変数ではない」根拠がかなり弱いですし出典もなし。出典を提示しないまま自身の思い込みを正しいと進めようとされてるように見えたための指摘です。
確認させていただきたいのですが、
「windowから見れない」と「グローバル変数ではない」をイコールにするなという意味ですよね?
適切な表現がわからないと前置きしているのに「自身の思い込みを正しいと進めようとされてる」と思われる理由がわかりません。
そうじゃないことを断るための前置きのつもりだったのですが
人それぞれ質問の認識が違うんだな
自分はobject.getScope()みたいなことをやりたい的な質問かと思ったけど、他の人のコメントや回答見ると受け取り方がバラバラだもんな
しかもそれがベストアンサーとして選ばれているんだから、それを見てやっと質問者の意図を理解したよ
まったく理解できていない部分についての質問なので、
誤解を与えてしまうような質問文になってしまって申し訳ありません。
ただベストアンサーだと、直接アクセスできないものとのことなので、
スコープを取得するような方法を実行しても、エラーかなにかになるのかと思ったのですが、
hentaimanさん的にはどういう風に思われてたのでしょうか?
回答2件
あなたの回答
tips
プレビュー