如何在JavaScript中将传递给函数的变量设置为null

假设我在JavaScript中有一个函数:

function something (variable) {
    console.log(variable);
}

我如何设置,如果没有变量通过,那么它默认为空?


当你调用一个函数时,对于所需函数参数的数量,JavaScript并不是很挑剔; 声明中提到但未传递的任何参数都将设置为undefined类型。

例如:

function test(foo)
{
    console.log(foo === undefined); // true
}

要设置默认值,至少有三个选项:

function test(foo)
{
    console.log(foo || 'default value');
}

以上将输出foo的值(如果它真的是真的),否则输出'default value'

function test(foo)
{
    console.log(foo === undefined ? foo : 'default value');
}

这将输出foo的值(如果它不是undefined ,否则输出'default value'

最后,您可以计算传递的参数数目:

function test(foo)
{
    console.log(arguments.length > 0 ? foo : 'default value');
}

这将输出foo的值(无论其类型如何),如果传递参数。

进一步考虑

尽管自ES5以来undefined不可写,但并非所有浏览器都会如此警惕地执行此操作。 如果您担心这一点,您可以使用两种选择:

foo === void 0;
typeof foo === 'undefined'; // also works for undeclared variables

以上所有内容都可以正常工作,但这是最简单的方法,我使用最多。

variable = variable ? variable : undefined; // you can use null as well

它应该像下面这样简单:

function something (variable) {
    console.log(variable || null);
}

一般来说,您可以将默认值分配给像这样的参数:

function something (somevar1, somevar2 /* ... somevarn */) {
    somevar1 = somevar1 || 'somevar1 not present';
    somevar1 = somevar2 || 2;
    somevar3 = somevar3 || {foo: 'bar', foobar: null}
    /* etc. */
}

或者,如果您需要防御0false等(并为@Ketola服务),则可以制作如下所示的内容:

function something (somevar1) {
    somevar1 = ['', 0, false, null, undefined].indexOf(somevar1) > -1
               && null || somevar1;
}

... this || that ... this || that就是所谓的短路评估

链接地址: http://www.djcxy.com/p/76359.html

上一篇: How to set a variable passed on to a function as null in JavaScript

下一篇: How can I check whether an optional parameter was provided?