为什么有时在使用变量之前先为其分配“ null”

时间:2019-03-16 03:00:14

标签: javascript function null p5.js

以以下代码段为例:

//variable a,b and c will hold Constructors later
var a = null;
var b = null;
var c;

function setup() {
  //assign those Constructors to variable a,b and c
  a = new ControlsAndInput();
  b = new p5.FFT();
  c = new myOwnConstructor();
}

我注意到有些人喜欢声明null值并将其分配给全局变量,该变量将在以后使用。

问题是:在使用变量之前分配null值与不分配null值有什么区别?在上面的示例中,变量abc之间是否有任何区别,因此与ab不同的是,c未分配开头的null值可能会导致任何潜在的错误,为什么我有时需要在使用变量之前先将null分配给变量

3 个答案:

答案 0 :(得分:2)

如果您没有将null分配给变量,则可以将undefined分配给它。

var a = null;
var b = null;
var c;

console.log(a, b, c) // => null, null, undefined

如果您想了解nullundefined之间的区别,可以阅读this question的答案。

如果您好奇为什么人们要添加null而不是添加undefined-可能有原因。例如,要传递undefined,请检入代码。同样,有时人们可以分配的不是空值,而是初始值,例如false0''等。这是类似的动作。

但是在您的特定情况下,您可以只使用var a, b, c;,它会起作用并且不会违反任何规则。

答案 1 :(得分:1)

您实际上要做的是保存全局变量,以供以后在函数内重新分配。 nullundefined之间没有真正的区别(除了null是一个对象而undefinedundefined之外)。

您的变量当前如下所示:

var a = null;
var b = null;
var c;

console.log(a);
console.log(b);
console.log(c);

执行此操作的更简单方法是一次将它们全部分配而没有值:

var a, b, c;

然后,您可以稍后根据需要重新分配所有这些内容。

答案 2 :(得分:1)

这是一个基于意见的问题。在大多数情况下,您将为它们分配未定义的值。在某些情况下,您可以使用null来检查变量是否未定义。但请注意,null is evil

现在,让我澄清一下为什么我们需要那样的东西吗?

var a; // undefined
function setup() {
  a = 10;
}
console.log(a); // a is still undefined
setup();
console.log(a); // a is now 10

因此,您只是在函数范围之外定义变量,并在所需的设置中分配其值。每当您调用该函数时,全局作用域变量都会被更新。

希望这现在有意义。