很抱歉这个问题的根本性,但我找不到确切的答案。
我有一些代码依赖于重新声明来重置变量,但似乎无法正常工作。煮了我有
for (i=0; i<5; i++){
var j;
j += i
}
显然毫无意义的代码,但是我虽然j
在每个循环中都会被重置,但是它只是被跳过了。还有另一种方法吗?还是我只需要将其分配为null
?
欢呼
答案 0 :(得分:1)
您的代码有很多问题。
for (i=0; i<5; i++) {
var j;
j += i
}
j
是for
循环的局部变量,因此您将无法在循环外使用其值,j
尚未初始化,因此NaN += i
将导致NaN
将您的代码更改为以下内容:
var j = 0; // declare the variable outside of the loop and give it an initial value
for (i=0; i<5; i++) {
j += i;
}
// use j's value somewhere else
var x = j;
答案 1 :(得分:0)
如Chris G所述,您的示例实际上并不适用,因为该值始终为NaN
。在不分配值的情况下声明变量将始终使其undefined
。
function test() {
var j;
Logger.log(j); // undefined
}
如果您分配一个值,即使该值为null
,也可以。 (JS会将null
解释为零...您可以阅读更多here。)
function test() {
for (var i = 0; i < 5; i++){
var j = null;
j = j + i; // Explicitly writing to j
Logger.log(j); // 0.0, 1.0, 2.0, 3.0, 4.0
Logger.log(j += i); // 0.0, 1.0, 2.0, 3.0, 4.0
}
}
如Keith所述,您也可以使用const
。那将声明一个常量值,因此不需要重置,但是您也将无法操作它。
function test() {
const j = null;
for (var i = 0; i < 5; i++){
j = j + i; // Explicitly writing to j
Logger.log(j); // null, null, null, null, null
Logger.log(j += i); // 0.0, 1.0, 2.0, 3.0, 4.0
}
}
很遗憾,您不能在Google Apps脚本中使用let
。