我需要使用我的代码进行一些快速测试(获取函数中某些变量的值),并且我想对它们进行全球化,以便我可以通过控制台访问它们。
我知道这个方法:
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
等的情况下,将所有这些变量全球化的更快捷的方法是什么?
我不希望这是一个代码高尔夫问题,只是一个普通的编程问题。
答案 0 :(得分:3)
我认为没有办法做到这一点。见:
您是否尝试过在控制台中进行调试?使用Chrome,您可以设置断点,然后检查所有值。看看这个教程:
https://developers.google.com/chrome-developer-tools/docs/scripts-breakpoints
答案 1 :(得分:2)
为什么不是单个globals
对象而不是一堆变量?
function foo() {
window.globals = {
foo1 = 'foo',
foo2 = 'foo',
foo3 = 'foo',
foo4 = 'foo',
foo5 = 'foo',
foo6 = 'foo',
foo7 = 'foo',
foo8 = 'foo'
};
}
答案 2 :(得分:0)
如果他们都被简单地命名,你可以利用一个鲜为人知的技巧,变量实际上是字典:
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 notation