JavaScript中的全局与本地示例

时间:2015-02-18 20:10:15

标签: javascript

我试图学习JavaScript的基础知识并遇到了一些我并非完全100%关注的事情。这是代码,但没有在函数中声明my_number变量:



var my_number = 7; // this has global scope

var timesTwo = function(number) {
    my_number = number * 2;
    console.log("Inside the function my_number is: ");
    console.log(my_number);
}; 

timesTwo(6);

console.log("Outside the function my_number is: ")
console.log(my_number);




输出到: 函数内部的my_number是:12 函数my_number之外是:12

首先,根据我所读过的内容,如果你没有在函数中声明你的变量,它将采用同名全局变量的值。我对这里发生的事情的猜测是,当函数调用传递数字6时,它将它传递给函数,进行乘法并将结果(12)记录到控制台。一旦函数结束,它会保留该值12(基本上覆盖全局值?)并将数字12再次记录到控制台。

另一方面,当我在函数中声明变量时,var my_number = number * 2;它就像我期望的那样工作并打印出12在函数内部并使用全局变量{{1最后一行代码。



7




函数my_number内部是:12

在函数my_number之外是:7

我是否正确理解这一点? 特别是第一段代码。在继续之前,我想完全掌握这个概念,这对我来说似乎很重要。

1 个答案:

答案 0 :(得分:2)

您的理解似乎很好,但我不确定以下陈述:

  

一旦函数结束,它会保留该值12(基本上会覆盖全局值?)

这与函数结束无关。由于函数中没有具有该名称的局部变量,因此my_number的每个出现都直接引用全局变量,该变量写入赋值并从日志记录语句中读取。 timesTwo功能区没有自己的变量副本。