Дано:
console.log(boo); this outputs undefined
Учитывая:
var boo = 1;
console.log(boo); this outputs 1
После определения boo и установки 1, как я могу затем reset boo, так что console.log выводит undefined?
Спасибо
Дано:
console.log(boo); this outputs undefined
Учитывая:
var boo = 1;
console.log(boo); this outputs 1
После определения boo и установки 1, как я могу затем reset boo, так что console.log выводит undefined?
Спасибо
delete boo
Не используйте var boo = undefined. undefined - это просто переменная, и если кто-то устанавливает undefined = "hello", тогда вы будете получать привет везде:)
EDIT:
null не был таким же, как undefined. удалил этот бит.
Чтобы надежно установить переменную 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.
Чтобы просмотреть исходные спецификации, обратитесь к:
Для полноты я приложил краткое резюме альтернативных подходов к этой проблеме, а также возражения против этих подходов на основе ответов и комментариев, высказанных другими респондентами.
undefined в booboo = undefined; // not recommended
Хотя проще назначить undefined на boo напрямую, undefined не является зарезервированным словом, а может быть заменено на произвольное значение, такое как число или строку.
boodelete boo; // not recommended
Удаление boo полностью исключает определение boo, а не присваивает ему значение undefined, и даже тогда работает только, если boo глобальное свойство.
Используйте оператор 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
Вы можете просто назначить переменной значение undefined:
boo = undefined;
В качестве альтернативы вы можете использовать оператор delete для удаления переменной:
delete boo;
Это работает в Chrome Javascript Console:
delete(boo)
var boo = 1;
console.log(boo); // prints 1
boo = undefined;
console.log(boo); // now undefined