Как передать значение undefined в функцию с несколькими параметрами? - PullRequest
42 голосов
/ 25 января 2012

Я хочу передать значение undefined для функции с несколькими параметрами, но без пропуска параметра.

Что я имею в виду под "без пропуска параметра" . Я имею в виду, что мы не должны просто пропустить parm2, как в этом примере:

function myFunction (parm1, parm2) {}
myFunction("abc");

Это действительно сделает parm2 неопределенным, но мне не разрешено делать это таким образом, потому что мне нужно будет указать другие параметры ПОСЛЕ пропущенного параметра, поэтому предыдущий метод не будет работать в том случае, если я хочу сделать parm1 undefined НО также хотят иметь другие параметры после этого для хранения значения.

Я попытался решить проблему с:

myFunction( ,"abc"); //doesn't seem to work

Обновление:

и myFunction(undefined, "abc"); «теперь это работает надежно.

Однако стоит упомянуть, что:

Установка переменной на undefined считается плохой практикой, мы вместо этого следует использовать null.

Ответы [ 12 ]

0 голосов
/ 04 июля 2014

Если это возможно, не могли бы вы переставить функцию как myFunction (parm2, parm1)

т.е.попытаться убедиться, что возможные неопределенные параметры являются последними в функции, это может не сработать, если введено больше параметров.

0 голосов
/ 25 января 2012

myFunction(undefined,"abc") должно работать абсолютно, если кто-то жестокий не переопределил undefined! Если вы хотите быть в безопасности, есть десятки способов получить неопределенное значение, которое позволяет избежать предположения, что вещь, называемая «неопределенная», действительно имеет специальное неопределенное значение:

void 0
var undef; undef
[][0]
{}.foo
// `undef` is guaranteed to have the undefined value within this closure
(function(undef){ undef }())
// this expression evaluates as undefined
(function(){}())

void 0 является наиболее широко используемым (скомпилированный CoffeeScript включает его везде, где требуется неопределенное значение).

...