我试图学习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
我是否正确理解这一点? 特别是第一段代码。在继续之前,我想完全掌握这个概念,这对我来说似乎很重要。
答案 0 :(得分:2)
您的理解似乎很好,但我不确定以下陈述:
一旦函数结束,它会保留该值
12
(基本上会覆盖全局值?)
这与函数结束无关。由于函数中没有具有该名称的局部变量,因此my_number
的每个出现都直接引用全局变量,该变量写入赋值并从日志记录语句中读取。 timesTwo
功能区没有自己的变量副本。