为什么有时在使用变量之前将 'null' 分配给变量
Why assigning 'null' to a variable before using it, sometimes
以下面的代码片段为例:
//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
值有什么区别?上例中的 var a
、b
和 c
之间是否有任何区别,因此与 a
和 b
不同,c
未分配开始时的 null
值,这是否会导致任何潜在的错误,为什么我有时需要在使用它之前将 null
分配给变量
当您不将 null
分配给变量时,您将 "assign" 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;
它会起作用并且不会违反任何规则。
您实际上是在保存全局变量,以便稍后在函数内重新分配。 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;
然后您可以稍后根据需要重新分配所有这些。
这是一个基于意见的问题。在大多数情况下,您将为它们分配未定义的值。在某些情况下,您可以使用 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
因此,您只是在函数范围之外定义变量 a 并在所需的设置中为其赋值。每当您调用该函数时,都会更新全局范围变量。
希望这现在有意义。
以下面的代码片段为例:
//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
值有什么区别?上例中的 var a
、b
和 c
之间是否有任何区别,因此与 a
和 b
不同,c
未分配开始时的 null
值,这是否会导致任何潜在的错误,为什么我有时需要在使用它之前将 null
分配给变量
当您不将 null
分配给变量时,您将 "assign" 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;
它会起作用并且不会违反任何规则。
您实际上是在保存全局变量,以便稍后在函数内重新分配。 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;
然后您可以稍后根据需要重新分配所有这些。
这是一个基于意见的问题。在大多数情况下,您将为它们分配未定义的值。在某些情况下,您可以使用 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
因此,您只是在函数范围之外定义变量 a 并在所需的设置中为其赋值。每当您调用该函数时,都会更新全局范围变量。
希望这现在有意义。