为什么在使用之前为什么要为变量赋值'null'

问题描述 投票:2回答:3

以下面的代码片段为例:

//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 abc之间有什么区别,这样与ab不同,c在开始时没有被赋予null值,这是否会导致任何潜在的bug,为什么我需要在之前将null赋值给变量有时使用它

javascript function null p5.js
3个回答
2
投票

如果你没有将null分配给变量,你可以“分配”undefined

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

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

如果你想知道this questionnull之间的差异,你可以阅读undefined的答案。

如果你很好奇为什么人们想要添加null而不是undefined - 可能有原因。例如,要通过undefined检查代码。此外,有时人们可以分配非空,但初始值,如false0''等;这是一个类似的行动。

但在你的特殊情况下,你可以使用var a, b, c;,它将工作,并没有违反任何规则。


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;

然后你可以按照自己的意愿重新分配所有这些。


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

因此,您只需在函数范围外定义变量a并在所需的设置中分配其值。无论何时调用该函数,都会更新全局范围变量。

希望现在有意义。

© www.soinside.com 2019 - 2024. All rights reserved.