我是JavaScript的新手,我正试图理解这个特定脚本的流程(这是教科书中的一个例子)。
var clunkCounter = 0;
thingamajig(5);
console.log(clunkCounter);
function clunk(times){
var num = times;
while (num > 0){
display("clunk");
num = num - 1;
}
}
function thingamajig(size){
var facky = 1;
clunkCounter = 0;
if (size == 0){
display("clank");
}
else if (size ==1){
display("thunk");
}
else{
while (size > 1){
facky = facky * size;
size = size - 1;
}
clunk(facky);
}
}
function display(output){
console.log(output);
clunkCounter = clunkCounter + 1;
}
我知道这组函数调用的结果是字符串"clunk"应该被输出到控制台120次,然后值120应该被输出到控制台。
我的问题是-为什么声明全局变量clunkCounter并将其值设置为0,只是为了在thingamajig函数中做同样的事情?这不是多余的吗?我知道如果var clunckCounter = 0;语句不存在,也会达到同样的效果(如果不在thingamajig函数中使用'var'关键字声明clunkCounter,它就会变成一个全局变量而不是局部变量)。我的假设正确吗?
看起来作者希望clunkCounter
在每次调用thingamajig
时都重置为0
,因为display
(thingamajig
调用)修改了计数器。
原clunkCounter
声明的目的是使其全局化,初始化是多余的