問題タブ [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 に答える
218 参照

jquery - jQuery 変数が空なのはなぜですか?

私は jQuery を初めて使用し、ここにいるほとんどのフロントエンドの専門家にとっておそらく簡単に見つけられる問題に遭遇しました。

次のスクリプトを作成しました

getQueryString メソッドでクエリ文字列変数を作成しようとしていますが、どういうわけか queryString が空のままです。チェックボックスをオンにすると、queryString.concat(concatenationCharacter).concat(checkboxName); というステートメントが表示されます。に達し、「concetenationCharacter」と「checkboxName」の値が正しいことがわかります。では、なぜ私の関数は "" を返すのでしょうか?

これはおそらく変数のスコープの問題か何かです。私はそれが単純なものだと推測しています。ありがとう!

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

javascript - backbone.js Model.get()は未定義のスコープを返します。コーヒースクリプト+コーヒートースターを使用していますか?

app.js ファイルをビルドするコーヒー トースター (ステッチ用の素晴らしい NPM モジュール) で coffeescript を使用してアプリを作成しています。

私のアプリケーション クラスとテンプレートの多くは現在のユーザーに関する情報を必要とするため、クラス User (Backbone.Model を拡張) のインスタンスをメインの Application クラス (Backbone.Router を拡張) のプロパティとして格納しています。

初期化ルーチンの一部として、サーバーからユーザーを取得します (認証、役割、アカウントの切り替えなどを処理します)。そのコーヒースクリプトは次のとおりです。

最初のログ ステートメントは、正しい Backbone.Model 属性オブジェクトをコンソールに出力します。

ただし、ログに記録されたときにモデル属性がコンソールに明確に存在するにもかかわらず、2番目は未定義を返します。

さらに面白いことに、コンソールに「window.app.user.get('email')」と入力すると、手動で「ben@accomplicecreative.com」の期待値が返されます...?

参考までに、initialize メソッドを app.js ファイルにコンパイルする方法を次に示します。

次のように、静的 HTML でアプリケーション コントローラーを初期化します。

提案してください、ありがとうございます!

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

r - アタッチされていないパッケージ内のインポートされていないメソッドを、名前空間にない関数の呼び出しによって見つけるにはどうすればよいですか?

R 名前空間は、関連付けられたパッケージ内のすべての関数の直接の環境として機能します。言い換えると、bar()パッケージfooの関数が別の関数を呼び出すとき、R エバリュエーターは、最初に 内<environment: namespace:foo>、次に 、"imports.foo"<environment: namespace:base>という<environment: R_GlobalEnv>ように、 と入力して返された検索リストを下方向に別の関数を検索しますsearch()

名前空間の優れた側面の 1 つは、パッケージをより良い市民のように振る舞わせることができる<environment: namespace:foo>ことimports:fooです。(b) fooからインポートする他のパッケージへ。または (c) のような完全修飾関数呼び出しを介して。foo:::bar()

と、最近まで思っていたのですが…

振る舞い

この最近の SO の質問では、パッケージの名前空間に十分に隠されている関数が、一見無関係な関数の呼び出しによって見つかったというケースが強​​調されました。

その直接の原因

@Andrie は、gmodelsがパッケージ gdata からインポートれることを指摘して、元の質問に答えました。最初のものは によって計算され、2 番目のものは によって計算されるため、とは異なります。reorder.factortransform()T1T2stats:::reorder.default()gdata:::reorder.factor()

私の質問

上記の への呼び出しtransform(data, group=reorder(...))で、ディスパッチ メカニズムがreorder検出されてから にディスパッチされるのはgdata:::reorder.factor()どうしてでしょうか。

(回答には、 statsおよびbaseパッケージの関数を含む呼び出しからgdataの一見よく隠されているメソッドにつながるスコープ規則の説明が含まれている必要があります。)


さらに役立つ可能性のある詳細

  1. どちらgdata:::reorder.factorgdataパッケージ全体もgmodelsによって明示的にインポートされません。gmodelsNAMESPACEファイルのimport*ディレクティブは次のとおりです。

    /li>
  2. reorder()またはtransform()in <environment: namespace:gmodels>、または inのメソッドはありません"imports:gmodels"

    /li>
  3. gmodels をデタッチしても の動作は元に戻りませんreorder():gdata:::reorder.factor()それでもディスパッチされます:

    /li>
  4. reorder.factor()ベース環境の S3 メソッドのリストに保存されていません。

    /li>

ここ数日の R チャット スレッドには、いくつかの追加のアイデアが含まれています。Andrie、Brian Diggs、Gavin Simpson に感謝します。この質問の詳細。

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

c++ - true/falseを2倍にする

Bjarneは、スコープ制限としてifの条件を使用することを提案しています。特にこの例。

私は、宣言を真/偽の意味で解釈する方法に興味があります。

  1. 宣言です
  2. ダブルです。

編集:それは6.3.2.1の推奨事項としてのC++プログラミング言語です。

Edit2:特に動的キャストを使用したポインターのtemplatetypedefs提案は、Bjarnes提案への洞察を与える可能性があります。

SteveJessopは私に次のように語っています。-条件は式ではなく、宣言でもあり得ます。使用される値は、評価される値です。

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

scala - 奇妙なフォールドスコーピングの問題

トランザクションクエリブロックのデバッグ中に、このヘッドスクラッチャーに遭遇しました。

何らかの理由で、左折/失敗操作で接続のロールバックが発生したにもかかわらず、成功/右の結果もロールバックされていました。

例:

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

python-2.7 - 関数の第2スコープレベル内でPythonグローバル変数にアクセスできない

重複の可能性:
外部モジュールによって割り当てられた Python 変数は、印刷にはアクセスできますが、ターゲット モジュールでの割り当てにはアクセスできません。

一般的に、他の言語のスコープ ルールについて考えてみると、以下のコードで変数カウントの問題に遭遇するまで、Python のスコープ ルールはグローバル変数にも似ていると思い込んでいました。

次のエラーが発生しました: File "/Users/ns/permute2.py", line 9, in intPermute print ("%d: %s%c%c" % (count, str(fix),var[0], var[1])) UnboundLocalError: 代入前にローカル変数 'c​​ount' が参照されました

関数 intPermute の内部スコープ (if ステートメント) 内でグローバル変数 count にアクセスできないように定義された Python スコープ ルールはなぜですか? 関数の最初のステートメント スコープ レベルで同じ変数にアクセスできますか? 何故ですか?関数で同じ名前のローカル変数を定義することにより、グローバルスコープ変数を「オーバーライド」できることは理解していますが、ここではそうではないようです。

この問題を回避するために、intPermute 関数の先頭に次のステートメントを追加することができました: global count

さて、グローバルのこの意味は私には明らかではありませんでした.globalキーワードはグローバルスコープでローカル変数を「エクスポート」することだと思いました。

2 つの質問: 1) Python が関数 intPermute の第 2 レベルのスコープでグローバル変数カウントを表示できないのはなぜですか? 関数の最初のレベルのスコープでアクセスできますが? 2) グローバル キーワードがこの問題を解決するのはなぜですか? 1レベルアップのグローバル変数を解決するために常に機能しますか?

ありがとう。

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

javascript - コールバックを渡すときに、オブジェクト呼び出し関数を持つこの Javascript setInterval が内部パラメーターを評価しないのはなぜですか?

次のスクリプトは 1 2 3 4 5 6 7 を出力します。0 1 2 3 4 5 ... を出力すると仮定します。

実際、私の実際のコードでは、 print(lostCnt) は常に最新の (グローバルのように動作する) 最後のカウント更新に接続されていると思います。どうしてこれなの?そして、obj1のコードを変更できないという制約で実際のcntを保持するにはどうすればよいですか。

ありがとう、そしてこれが私の最初の投稿です

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

reference - Xtext のクロスリファレンスとスコーピング

xtext 相互参照にいくつか問題があります。これは非常に単純な文法です。

そしてそれは私のDSLです:

「従業員 'Pooyan' への参照を解決できませんでした」と常に表示されていました。誰でも私を助けてもらえますか?何も思いつきません...

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

c# - C#のプロパティを介してオブジェクトを公開する

ユーザーに機能を公開する一連のプロパティのみを持つ静的ユーティリティクラスを作成したい

たとえば、次のように呼び出すことができます。

また

これに例えることができる最も近いものは、UTF8、ASCIIなどのプロパティがあるSystem.Text.Encodingであるため、次のようなものを呼び出すことができます。

また

問題は、エンコーディングでは、これがユーザーに公開されている同等のオブジェクト(UTF8Encoder、 )を呼び出すことです。ASCIIEncoder私が欲しいのは、たとえば、プロパティに関連するオブジェクトの可視性なしで、Utilsを介してのみオブジェクトを公開することです

私は呼び出すことができます:

しかし、私は呼び出すことができませんでした:

これは可能ですか?可能であれば、そうすることは良い習慣になるのでしょうか、それとも悪い習慣になるのでしょうか?

0 投票する
0 に答える
629 参照

wpf - WPFでキースコープにアクセスしますか?

私は次のように私のXAMLを持っています、

これらすべてのアイテムに対してトリガーされた AccessKeyPressed イベントを特定のスコープに制限したいと考えています。たとえば、Alt+F を押すと、「食品」ではなく「ファイル」アイテムのみがトリガーされます。どうすればこれを制限できますか。e.Handled = true; を試しました。そして、それは役に立ちません。

他の提案はありますか?