問題タブ [scoping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
4129 参照

javascript - javascript:関数自体の中で無名関数を参照する方法は?

「usestrict」でarguments.calleeが許可されておらず、実行できない場合

IEでは機能しない(または「奇妙に」機能する)http://kangax.github.com/nfe/#jscript-bugsので、関数内の無名関数を参照する必要がある他のオプションは何ですか?自体?

0 投票する
4 に答える
3859 参照

r - 関数内の attach()

リスト要素 a を参照するたびに params$a の代わりに a を使用できるように、関数に params 引数を与えてからアタッチしたいと考えています。

これに問題はありますか?c という名前のグローバル変数を定義し、リスト "params" の c という名前の要素も定義した場合、attach コマンドの後にどの値が使用されるでしょうか?

0 投票する
2 に答える
500 参照

javascript - Javascriptスコープの質問:関数に渡された'this' objを介して要素を変更することはできませんが、ロングハンドアプローチを使用できます

改訂された質問(オリジナルについては以下を参照):

ロードされたコンテンツ内の要素にイベントバインディングを使用した単純なajaxロードの例を次に示します。

soTest.htm

Ajaxがコンテンツをロードしました。soTest2.htm:

では、なぜこれが機能しないのですか?

しかし、これはします:


++++++++++元の質問:++++++++++

特定のテーブル見出しがクリックされたときにソートしたいテーブルがあります(クラスが「sort」のテーブル)。
例えば:

それを行うために私はこのコードを持っています:

したがって、これらの並べ替え可能な列見出しの1つのクリックイベントで、この関数に渡すために「this」スコープ全体を変数に格納しています。

質問を単純化するために、私が使用しているカスタム属性'方向'に基づいて、クリックされた要素の背景色を変更しようとしているとだけ言います。

私はjavascriptスコープのいくつかの側面を理解していないと思います(「これ」を理解することは私には非常にとらえどころのないものでした)。

要約された質問:

var'd'this'スコープを関数に渡す場合、'this'要素のアスペクトを変更できないのはなぜですか?長い道のりを使用してドリルダウンする必要があるのはなぜですか?

私が明確にするためのトリッキーな質問、うまくいけば私は十分な仕事をしました。

ありがとう!

0 投票する
5 に答える
3422 参照

python - python noobieスコーピングの質問

私はこのコードを書きました:

Python がレキシカル スコープかダイナミック スコープかをテストしようとしています。私の考えはそうでした

0 または 1 を出力する必要があり、Python がどのようにスコープされているかがわかります。ただし、y を呼び出すと、x が未定義であるという例外がスローされます。Python がどのように機能するかについての私の理解には、何か根本的な欠陥があるようです。

誰かがこれがどのように機能するか説明できますか? はい、これはオブジェクトを使用して簡単に実行できることを認識しています。オブジェクトを使用せずに関数に状態を与えるというアイデアを探求しようとしています。私がこのようにコードを書いたのは、Scheme のようなレキシカル スコープの言語に変換された上記が確実に機能するためです。

0 投票する
3 に答える
834 参照

closures - javascript:モジュールをオブジェクトと関数のように同時に動作させるにはどうすればよいですか?

私は小さなヘルパー ライブラリを自分で構築しようとしています。最初は学習目的で、後でプロジェクトで役立つように拡張できます。

プロトタイプの参照、クロージャー、スコープについてある程度理解しています。toolboxまた、グローバル名前空間を汚染しないように、意図的にモジュール パターンを使用して作成しました。また、プロトタイプをコンストラクター関数に割り当てることができることも知っているので、構築されたオブジェクトはそれらのメソッドを保持します。

の内容はこちらtoolbox.js

と呼び出すtoolbox

ただし、上記のコードを次のように変更します。

動作します。

だから私の質問は、定義されたメソッドを継承するのに、なぜtoolbox.prototype = {} トリックをしないのですか?pick.prototype = {}pick

メソッドをモジュールに直接プロトタイピングすることを解決する必要なく、両方を実現し、可能にしtoolbox.tell("something");たいと考えています。toolbox("div").raw();

助けてください!私はこれらを学ぶために何日もグーグルで検索してきましたが、今は立ち往生しています。あなたの助けは大歓迎です!

アップデート

jQuery でこれを行う方法を簡単に説明すると、次のようになります。

0 投票する
2 に答える
472 参照

php - PHPで「グローバル」を使用する

私はここで学習モードにあり、PHPは非常に新しいので、コードサンプルを使用しています。ここでの「グローバル」の使用はご容赦ください。ただし、php変数のスコープについて理解したいと思います。

myGlobals.phpは次のとおりです。

これがconnectToDb.phpです:

addDbRecords.phpは次のとおりです。

これがindex.phpです:

ここに問題があります。doAddDeleteRecord($db_server)上記のファイルaddDbRecords.php内で呼び出すと、$db_server無効になります-nullになります-呼び出すmysql_query(.., $db_server, ...) と、これはエラーメッセージです。

「警告:mysql_query()は、パラメーター2がリソースであると想定しています。29行目のC:\ xampp \ htdocs\addDbRecords.phpでnullが指定されています。」

そこで、内部で「グローバル」宣言を使用してみdoAddDeleteRecord()ました(上記でコメント)-変更はありません。
それでも、のmysql_query(...)値がNULLの場合は失敗します$db_server

mysql_connect(....)他のコードが(SELECTを使用して)データベースからすべてのレコードを正常に引き出し、既存のレコードがブラウザーに正しく表示されるため、動作がわかります。

$db_serverしたがって、私の意見では、「グローバル」で宣言されているという事実は、のスコープ$db_serverが一度mysql_connect(...)呼び出されるようなものであることを意味するはずです-すべてのファイルのファイルスコープで$db_server、データベースへの有効な接続になります。

私はphpスコーピングについてのみ学習しようとしており、OOADやその他のことについては学習しようとしていません(今のところ)。なぜ$db_server()ここでnullなのですか?

0 投票する
1 に答える
1894 参照

jsf - JSF2/Faceletsのプライベート/スコープ変数

JSFのビジュアルコンポーネントに関しては正しく考えていないかもしれませんが、それは私の質問の一部だと思います。私の質問は、JSF <ui:component>実装内で宣言された変数のスコープが不足しているように見えることです。

だから、私が/resources/comp/myPanel.xhtmlを持っているとしましょう:

そして、そのコンポーネントにロードされるリソースバンドル、panelOnly/bundle.propertiesがあります。

そして、myPanelコンポーネントmainPage.xhtmlを配置するページがあります。

メインページmainPage/bundle.propertiesに読み込まれるリソースバンドルがあります。

ここで、私のページは次のようにレンダリングされると思います。

しかし、代わりに、私は次のようになります。

そして、それは、mainPage.xhtmlがその値を解決しようとしたときに、元のmainPageのオブジェクトではなく、コンポーネントの「バンドル」オブジェクトを参照するように、コンポーネントで「バンドル」シンボルが参照するものを壊したためだと思います。

これまでの私の回避策は、メインページの変数と衝突することのない一意の名前付き変数をコンポーネント内で使用することでした。しかし、JSFを誘導して、コンポーネントで宣言されたものをローカルスコープの変数として認識し、呼び出し元のシンボルを壊さないようにする方法があればいいのですが。

#{cc.attrs...}の下にローカルスコープの変数を作成するために使用できるタグが他にもあると思います。あなたの答えに私の地元のスコーピングオプションを列挙することができれば、それは非常に役に立ちます。<f:loadBundle>は特殊なケースであると思われますが、<ui:component>を念頭に置いて設計されていないため、回避策がない可能性があります。

ありがとう!

PS私はMojarra2.1.1(FCS 20110408)を実行しています

(2011年6月15日のバグのフォーマットとコピーアンドペースト用に編集)

0 投票する
3 に答える
74 参照

javascript - JavaScript 変数のスコープ

javascript がローカルコードでグローバル変数の作成を許可するのはなぜですか?

0 投票する
1 に答える
299 参照

ruby-on-rails-3 - Rails3 でのスコーピングによるイーガーローディング

Rails3 アプリのスコープに基づいてアソシエーションを熱心にロードしようとしましたが、解決策が見つかりませんでした。

私のアプリには次のモデルがあります:

また、projects#index には、ユーザーのすべてのプロジェクトを取得する次のコードがあります。

ユーザーのすべてのプロジェクトを取得し、関連付けを熱心に読み込みます。したがって、プロジェクト内のすべてのエントリを取得するために次のループを実行すると、新しいクエリは発生しません。

この熱心な読み込みはすべてのエントリを取得するため、実際に必要な量よりもデータが多すぎます。そのため、熱心にロードされたエントリにいくつかの条件を適用しようとしましたが、解決策が見つかりませんでした。私は次のようなものを探していました:

いくつかの条件を満たすエントリのみが読み込まれるようにします。

熱心な読み込みでスコープを使用することはできませんか? スコーピングと一緒にeagerloadingを使用するのを手伝ってください。