以以下代码段为例:
//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
值有什么区别?在上面的示例中,变量a
,b
和c
之间是否有任何区别,因此与a
和b
不同的是,c
未分配开头的null
值可能会导致任何潜在的错误,为什么我有时需要在使用变量之前先将null
分配给变量
答案 0 :(得分:2)
如果您没有将null
分配给变量,则可以将undefined
分配给它。
var a = null;
var b = null;
var c;
console.log(a, b, c) // => null, null, undefined
如果您想了解null
和undefined
之间的区别,可以阅读this question的答案。
如果您好奇为什么人们要添加null
而不是添加undefined
-可能有原因。例如,要传递undefined
,请检入代码。同样,有时人们可以分配的不是空值,而是初始值,例如false
,0
,''
等。这是类似的动作。
但是在您的特定情况下,您可以只使用var a, b, c;
,它会起作用并且不会违反任何规则。
答案 1 :(得分:1)
您实际上要做的是保存全局变量,以供以后在函数内重新分配。 null
和undefined
之间没有真正的区别(除了null
是一个对象而undefined
是undefined
之外)。
您的变量当前如下所示:
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
因此,您只是在函数范围之外定义变量,并在所需的设置中分配其值。每当您调用该函数时,全局作用域变量都会被更新。
希望这现在有意义。