【问题标题】:Is a Variable That is Equal to a Function Considered a Global Variable?等于函数的变量是否被视为全局变量?
【发布时间】:2019-04-18 04:15:37
【问题描述】:
在我的一个测验中,我们被要求确定以下代码块中有多少个全局变量:
var one = 1;
var two = 2;
var multiplier = function(number){
}
我回答说有两个:一个和两个。但是,我的老师把它标记错了,并说有 3 个全局变量。等于函数的变量是否仍被视为全局变量?
【问题讨论】:
-
是的,在 JavaScript 中,函数是一流的对象,这意味着它们可以: a) 存储在变量、对象或数组中。 b) 作为参数传递给函数。 c) 从函数返回。更多信息here
-
标签:
javascript
scope
global-variables
【解决方案1】:
函数在 Javascript 中是一流的——它们可以分配给任何变量。变量可以保存任何值——数字(如one 和two)、字符串等、对象、或函数。
恰好指向函数的全局变量(如multiplier)仍然是全局变量。
请注意,顶层的函数声明也会创建全局变量,例如:
function multiplier(number) {
}
// The function declaration created a property on the global object:
console.log(typeof window.multiplier);
// just like:
var one = 1;
console.log(typeof window.one);
当然,global variables are best avoided 不需要,而且很少需要。