我在浏览器中使用RequireJS。我有一些脚本标签加载的JS,如:
requirejs(["jquery", "shared", function($, shared) {
var foo='bar';
}
我想在Chrome开发工具的JS控制台中打印'foo'的当前值。我怎么能这样做?
编辑2:这个问题最初含糊不清 - 抱歉。为了澄清,我不想停止使用RequireJS,污染全局,或者事先知道我想调试它是什么。
答案 0 :(得分:4)
在Chrome或Firebug中设置一个断点,以便在关闭时断开。然后,Foo将可用于控制台,直到您恢复脚本执行。
编辑:范围仍然很重要。如果变量在共享成员中是私有的,则需要在shared.js中设置中断,例如,如果我们假设shared.js包含:
var shared = {
myFunc: function() {
var foo = 'bar';
// break here
}
}
答案 1 :(得分: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);
}
答案 2 :(得分:0)
你可以用
做到这一点`requirejs(["jquery", "shared", function($, shared) {
var foo=bar;
console.debug(foo);
}`
同样的命令也适用于Firefox。
答案 3 :(得分:0)
JS控制台已具有您网页的上下文。只需打开控制台,输入“foo”,然后按Enter键。
答案 4 :(得分: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)
。