我正在努力使用 Google 应用程序脚本。
function myFn() { Logger.log("In Function"); }
Logger.log("In main");
myFn();
产生:
In Function
In main
In Function
虽然我认为这真的很奇怪,但我正在通过设置一个虚拟函数作为入口点来解决它。这可能与我在这里不明白的其他内容有一些关系。
在内联/主作用域中定义的变量似乎不具有全局作用域。
尝试通过引用传递数组并没有像我预期的那样工作。
考虑:
function byRefFn(myarr) {
Logger.log("DEBUG: in byRefFn")
myarr["testing"]="set in byRefFn";
}
function byGlblFn() {
Logger.log("DEBUG: in byGblFn")
myarr["testing"]="set in byRefFn";
}
function dummy()
{}
var myarr=[];
byRefFn(myarr);
Logger.log("DEBUG: myarr=" + JSON.stringify(myarr));
byGlblFn();
Logger.log("DEBUG: myarr=" + JSON.stringify(myarr));
产生....
1:48:59 PM Notice Execution started
1:48:59 PM Info DEBUG: in byRefFn
1:48:59 PM Info DEBUG: myarr=[]
1:48:59 PM Info DEBUG: in byGblFn
1:48:59 PM Info DEBUG: myarr=[]
1:49:00 PM Notice Execution completed
我几乎可以相信内联代码并未真正在全局范围内执行,但无法为特定键设置值是一个问题。我知道使用 .push(value) 值仍然存在 - 这没有帮助。
如何在不同范围内定义的数组中设置键+值?
var myarr=[]; myarr["testing"]="set in byRefFn";
来自 JavaScript 文档:
JavaScript 数组不是关联数组,因此,数组元素不能使用任意字符串作为索引来访问,但必须使用非负整数(或其各自的字符串形式)作为索引来访问。
要使其正常工作,请将
myarr
声明为对象 {}
而不是数组 []
。