Зачем присваивать переменную null перед ее использованием, иногда - PullRequest
2 голосов
/ 16 марта 2019

Взяв в качестве примера следующий фрагмент кода:

//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 переменной, прежде чем использовать ее иногда

Ответы [ 3 ]

2 голосов
/ 16 марта 2019

Когда вы не назначаете null переменной, вы «назначаете» undefined ей.

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

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

Вы можете прочитать ответы на этот вопрос , если хотитеузнать разницу между null и undefined.

Если вам интересно, почему люди хотят добавить null вместо undefined - могут быть причины.Например, чтобы передать undefined, проверьте код.Кроме того, иногда люди могут назначать не нулевые, а начальные значения, такие как false, 0, '' и т. Д .;это аналогичное действие.

Но в вашем конкретном случае вы можете просто использовать var a, b, c;, и оно будет работать и не нарушать никаких правил.

1 голос
/ 16 марта 2019

Это вопрос, основанный на мнении. В большинстве случаев вы назначаете им неопределенное значение. А в некоторых случаях вы можете использовать null, чтобы проверить, не является ли переменная неопределенной. Но знайте, что ноль - это зло .

Теперь позвольте мне уточнить, зачем нам это нужно?

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

Итак, вы просто определяете переменную a вне области действия функции и присваиваете ее значение в требуемой настройке. И всякий раз, когда вы вызываете функцию, глобальная переменная области видимости обновляется.

Надеюсь, теперь это имеет смысл.

1 голос
/ 16 марта 2019

По сути, вы сохраняете глобальные переменные для последующего переназначения внутри функции. Нет реальной разницы между 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;

Затем вы можете переназначить все те, которые пожелаете позже.

...