所以这是我的谷歌应用程序脚本,顶部没有块注释:
function GET_POSITION(game,position) {
defaultsheets=['Stats','Games','Calculations'];
var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();
sheets.forEach(function(sheet) {
name=defaultsheets.indexOf(sheet.getName())==-1;
return false;
if(name)
{
name='test';
}
});
return name;
}
是的我知道,这是一个奇怪的脚本,它没有做任何事情。那是因为我一直在改变它,试图找出它为什么不起作用。
但这不是问题。我希望这个脚本返回false。 它没有,它返回true。但是当我删除“return false”时,它仍然不会运行if语句(它只是保持返回True)。
含义:
返回false会被忽略吗?
name等于true,但在执行if(name)时,不执行if语句。
在表格的开头放置name =“test”将使该函数返回“test”。
我不知道为什么这个脚本会以这种方式运行。
答案 0 :(得分:1)
好吧,哈哈,这个是一个奇怪的脚本。当我第一次看到它时,我想,如果没有编译错误,它怎么能运行呢?变量name
在闭包范围之外被调用,函数的其余部分不应该知道它的任何内容,它会给出未声明的变量错误。
然后我看到您没有使用var
来初始化变量name
。这使name
表现得像一个全局常量。这肯定会给你意想不到的行为。这样做绝对没有充分的理由。
Declaring variables without var keyword
另一件事是只有匿名函数返回false。然后它跳出并返回name
,它已设置为true。
What are Closures and Callbacks?
而且,我不得不问,你为什么要使用ALL_CAPS来命名函数?