Подтвердить что ты не робот

Как установить javascript var как undefined

Дано:

console.log(boo); this outputs undefined

Учитывая:

var boo = 1;
console.log(boo); this outputs 1

После определения boo и установки 1, как я могу затем reset boo, так что console.log выводит undefined?

Спасибо

4b9b3361

Ответ 1

delete boo

Не используйте var boo = undefined. undefined - это просто переменная, и если кто-то устанавливает undefined = "hello", тогда вы будете получать привет везде:)

EDIT:

null не был таким же, как undefined. удалил этот бит.

Ответ 2

Решение

Чтобы надежно установить переменную boo в undefined, используйте функцию с пустым выражением return:

boo = (function () { return; })();

После выполнения этой строки кода typeof(boo) оценивается до 'undefined', независимо от того, установлено ли глобальное свойство undefined на другое значение. Например:

undefined = 'hello';
var boo = 1;
console.log(boo); // outputs '1'
boo = (function () { return; })();
console.log(boo); // outputs 'undefined'
console.log(undefined); // outputs 'hello'

EDIT Но см. также @Colin более простое решение!

Ссылка

Такое поведение является стандартным еще в ECMAScript 1. Соответствующая спецификация частично заявляет:

Синтаксис

return [no LineTerminator here] Expression;

Семантика

Оператор return заставляет функцию прекратить выполнение и вернуть значение вызывающему. Если выражение не указано, возвращаемое значение undefined.

Чтобы просмотреть исходные спецификации, обратитесь к:

Приложение

Для полноты я приложил краткое резюме альтернативных подходов к этой проблеме, а также возражения против этих подходов на основе ответов и комментариев, высказанных другими респондентами.

1. Назначьте undefined в boo

boo = undefined; // not recommended

Хотя проще назначить undefined на boo напрямую, undefined не является зарезервированным словом, а может быть заменено на произвольное значение, такое как число или строку.

2. Удалить boo

delete boo; // not recommended

Удаление boo полностью исключает определение boo, а не присваивает ему значение undefined, и даже тогда работает только, если boo глобальное свойство.

Ответ 3

Используйте оператор void. Он будет оценивать это выражение, а затем возвращать undefined. Идиоматично использовать void 0 для назначения переменной undefined

var boo = 1; // boo is 1
boo = void 0; // boo is now undefined

Подробнее здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void

Ответ 4

Вы можете просто назначить переменной значение undefined:

boo = undefined;

В качестве альтернативы вы можете использовать оператор delete для удаления переменной:

delete boo;

Ответ 5

Это работает в Chrome Javascript Console:

delete(boo)

Ответ 6

var boo = 1;
console.log(boo); // prints 1
boo = undefined;
console.log(boo); // now undefined