3

ブラウザで RequireJS を使用しています。次のようなスクリプトタグによってロードされたJSがいくつかあります。

requirejs(["jquery", "shared", function($, shared) {
  var foo='bar';
}

Chrome Dev Tools の JS コンソールから「foo」の現在の値を出力したいと思います。これどうやってするの?

編集 2:この質問はもともと非常に曖昧な表現でした - 申し訳ありません。明確にするために、RequireJSの使用をやめたり、グローバルを汚染したり、デバッグしたいものを事前に知りたくありません。

4

5 に答える 5

4

Chrome または Firebug でブレークポイントを設定して、クロージャのポイントでブレークします。その後、スクリプトの実行を再開するまで、コンソールで Foo を使用できます。

編集:スコープは依然として重要です。変数が shared のメンバー内で非公開の場合、代わりに shared.js にブレークを設定する必要があります。たとえば、shared.js に以下が含まれていると仮定した場合:

var shared = {
    myFunc: function() {
        var foo = 'bar';
        // break here
    }
}
于 2012-07-31T08:47:11.360 に答える
2

質問を理解すれば、RequireJS を使用することの要点は、グローバル変数を使用しないことです。

したがって、次のconsole.jsようなモジュールを定義します。

define(function() {
  var nativeConsole = {};
  try {
    // for IE 8/9
    if (!window.console) {
      window.console = {
        log:   function() {},
        debug: function() {},
        info:  function() {},
        warn:  function() {},
        error: function() {}
      };
    }
    nativeConsole = console;
  // Firefox throws an exception if you access the console object and it doesn't exist. Wow!
  } catch (e) { }
  return nativeConsole;
});

次に、次のように使用します。

requirejs(["jquery", "console", function($, console) {
  var foo='bar';
  console.warn("foo = " + foo);
}
于 2013-05-14T12:55:53.533 に答える
0

var 定義をクロージャーの外に移動します。

var foo;
requirejs(["jquery", "shared", function($, shared) {
  foo='bar';
});

これの欠点はfoo、グローバルwindowスコープに存在すること (変数は として存在するwindow.foo) であり、グローバル変数は避ける必要があります。ただし、デバッグには役立ちます。または、次のように定義しますwindow

requirejs(["jquery", "shared", function($, shared) {
  window.foo='bar';
});

または、これを行い、デバッグ段階を過ぎても変数を保持する予定がある場合は、「独自の」変数用のカスタム名前空間を作成することを検討する必要があります。

var myNamespace = {};
requirejs(["jquery", "shared", function($, shared) {
  myNamespace.foo='bar';
});

そして、あなたはすることができwindow.console && console.log(myNamespace.foo)ます。

于 2012-07-31T08:36:43.753 に答える
0

あなたはそれを行うことができます

`requirejs(["jquery", "shared", function($, shared) {   
  var foo=bar;
  console.debug(foo);
}`

同じコマンドが Firefox でも機能します。

于 2012-07-31T08:21:57.447 に答える
0

JS コンソールには、ページのコンテキストが既にあります。コンソールを開いて「foo」と入力し、Enter キーを押します。

于 2012-07-31T08:25:32.020 に答える