Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要了解JavaScript脚本的帮助吗_Javascript_Global Variables_Local Variables - Fatal编程技术网

需要了解JavaScript脚本的帮助吗

需要了解JavaScript脚本的帮助吗,javascript,global-variables,local-variables,Javascript,Global Variables,Local Variables,我对JavaScript非常陌生,我试图理解这个特定脚本的流程(这是一个教科书中的示例) 我知道这组函数调用的结果是字符串“clunk”应该输出到控制台120次,然后值120应该输出到控制台 我的问题是-为什么声明全局变量clunkCounter并将其值设置为0,而只在thingamajig函数中执行相同的操作?这不是多余的吗?我知道如果var clunckCounter=0;语句不存在,也可以达到同样的效果(在thingamajig函数中不使用'var'关键字声明clunkCounter,它将

我对JavaScript非常陌生,我试图理解这个特定脚本的流程(这是一个教科书中的示例)

我知道这组函数调用的结果是字符串“clunk”应该输出到控制台120次,然后值120应该输出到控制台


我的问题是-为什么声明全局变量clunkCounter并将其值设置为0,而只在thingamajig函数中执行相同的操作?这不是多余的吗?我知道如果var clunckCounter=0;语句不存在,也可以达到同样的效果(在thingamajig函数中不使用'var'关键字声明clunkCounter,它将成为全局变量而不是局部变量)。我的假设正确吗?

作者似乎希望每次调用
thingamajig
时将
clunkCounter
重置为
0
,因为
display
(调用
thingamajig
)会修改计数器


原始声明的
clunkCounter
的目的是使其全局化,初始化是多余的。

是的,您的假设是正确的。有些程序员更喜欢初始化所有变量,这只是一种编码方式,不需要赋值。只需声明
var clunkCounter
已经足够了。所以,为了确保我能做到这一点,同样的结果可以通过几种不同的方式实现。变量clunkCounter可以声明为全局变量,但没有分配值(
var clunkCounter;
),然后可以在thingamajig()中分配该值。或者,行
clunkCounter=0可能已从ThingAdming中完全删除。或者,全局声明
var clunkCounter=0。这是正确的吗?@Kiyana我相信是的,尽管我不是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;
}