«Стандартным» решением этой проблемы является использование встроенного оператора void
. Его единственная цель - вернуть undefined:
var my_undefined = void 0;
В дополнение к этому, есть и другие способы получить undefined
:
Функции возвращают undefined, если вы ничего не делаете return
, чтобы вы могли сделать что-то вроде
this_is_undefined = (function(){}());
Вы также получите неопределенное значение, если не передадите достаточное количество аргументов функции. Таким образом, общая идиома это
function foo(arg1, arg2, undefined){ //undefined is the last argument
//Use `undefined` here without worrying.
//It is a local variable so no one else can overwrite it
}
foo(arg1, arg2);
//since you didn't pass the 3rd argument,
//the local variable `undefined` in foo is set to the real `undefined`.
Этот тип особенно хорош для случаев, когда вы определяете и вызываете функцию одновременно, чтобы не было риска забыть и передать неверное число аргументов.