非常简单的 google 应用程序脚本中的意外行为
Unexpected behaviour in really simple google apps script
所以这是我的 google 应用脚本,上面没有块注释:
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;
}
是的,我知道,这是一个奇怪的脚本,它不起作用 anything.That 是因为我一直在更改它,试图找出它不起作用的原因。
但这不是问题所在。我希望这个脚本 return false。
它没有,它 return 是真的。但是当我删除 "return false" 它仍然不会 运行 if 语句(它只是保持 returning True)。
含义:
return false 会被忽略吗?
name等于true,但是做if(name)时,if语句没有执行。
将 name="test" 放在 sheet 的开头将使函数 return "test".
我不知道为什么这个脚本会这样运行。
嗯,哈哈,这个是一个奇怪的脚本。初看的时候心想,这连运行怎么可能没有编译错误呢?变量 name
在闭包范围之外被调用,函数的其余部分不应该知道它,它会给出一个未声明的变量错误。
然后我看到你没有使用 var
来初始化你的变量 name
。这使得 name
表现得像一个全局常量。那肯定会给您带来意想不到的行为。从来没有一个很好的理由这样做。
Declaring variables without var keyword
另一件事是只有匿名函数返回 false。然后跳出returnsname
,已经设置为true
What are Closures and Callbacks?
而且,我不得不问,你为什么要使用 ALL_CAPS 来命名一个函数?
所以这是我的 google 应用脚本,上面没有块注释:
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;
}
是的,我知道,这是一个奇怪的脚本,它不起作用 anything.That 是因为我一直在更改它,试图找出它不起作用的原因。
但这不是问题所在。我希望这个脚本 return false。 它没有,它 return 是真的。但是当我删除 "return false" 它仍然不会 运行 if 语句(它只是保持 returning True)。
含义:
return false 会被忽略吗?
name等于true,但是做if(name)时,if语句没有执行。
将 name="test" 放在 sheet 的开头将使函数 return "test".
我不知道为什么这个脚本会这样运行。
嗯,哈哈,这个是一个奇怪的脚本。初看的时候心想,这连运行怎么可能没有编译错误呢?变量 name
在闭包范围之外被调用,函数的其余部分不应该知道它,它会给出一个未声明的变量错误。
然后我看到你没有使用 var
来初始化你的变量 name
。这使得 name
表现得像一个全局常量。那肯定会给您带来意想不到的行为。从来没有一个很好的理由这样做。
Declaring variables without var keyword
另一件事是只有匿名函数返回 false。然后跳出returnsname
,已经设置为true
What are Closures and Callbacks?
而且,我不得不问,你为什么要使用 ALL_CAPS 来命名一个函数?