等于函数的变量是否被视为全局变量?

时间:2019-04-18 04:15:37

标签: javascript scope global-variables

在我的一个测验问题中,我们被要求确定以下代码块中有多少个全局变量:

    var one = 1;
    var two = 2;
    var multiplier = function(number){
    }

我回答说有两个:一个两个。但是,我的老师将其标记为错误,并指出存在3个全局变量。等于函数的变量是否仍被视为全局变量?

1 个答案:

答案 0 :(得分:2)

函数在Javascript中是一流的-可以将它们分配给任何变量。变量可以保存任何值-一个数字(例如onetwo),字符串等,对象,或函数

碰巧指向一个函数的全局变量(与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不必要,而且很少需要。