我需要用我的代码做一些快速测试(获取函数中一些变量的值),我想要全球化它们,这样我就可以通过控制台访问它们。
我知道这个方法:
function foo() {
var foo = 'foo';
window.foo = foo; // Make foo global
}但是如果我有这样的东西呢:
function foo() {
var foo1 = 'foo';
var foo2 = 'foo';
var foo3 = 'foo';
var foo4 = 'foo';
var foo5 = 'foo';
var foo6 = 'foo';
var foo7 = 'foo';
var foo8 = 'foo';
}有什么方法可以更快地将所有这些变量全球化,而不需要使用window.foo1 = foo1、window.foo2 = foo2等?
我不希望这是一个代码高尔夫问题,只是一个普通的编程问题。
发布于 2013-01-15 11:17:22
我认为没有办法做到这一点。请看以下内容:
您是否尝试过在控制台中进行简单的调试?使用Chrome,你可以设置一个断点,然后检查所有的值。请查看此教程:
https://developers.google.com/chrome-developer-tools/docs/scripts-breakpoints
发布于 2013-01-15 11:22:18
为什么不是单个globals对象而是一堆变量呢?
function foo() {
window.globals = {
foo1 = 'foo',
foo2 = 'foo',
foo3 = 'foo',
foo4 = 'foo',
foo5 = 'foo',
foo6 = 'foo',
foo7 = 'foo',
foo8 = 'foo'
};
} 发布于 2013-01-15 11:21:49
如果它们都是这样简单地命名,你可以利用一个鲜为人知的技巧,变量实际上是字典:
function foo() {
var foo1 = 'foo';
var foo2 = 'foo';
var foo3 = 'foo';
var foo4 = 'foo';
var foo5 = 'foo';
var foo6 = 'foo';
var foo7 = 'foo';
var foo8 = 'foo';
for (var i = 1; i <= 8; i++) {
window["foo" + i] = eval("foo" + i);
}
}
document.write("Running foo...<br/>");
foo();
document.write("Printing foo...<br/>");
for (var i = 1; i <= 8; i++) {
document.write(window["foo" + i]);
}
document.write("<br/>Just one: " + foo3);// Normal variable notationhttps://stackoverflow.com/questions/14330586
复制相似问题