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

Dmi*_*kin 8 javascript

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

function something (variable) {
    console.log(variable);
}
Run Code Online (Sandbox Code Playgroud)

如果没有传递变量,如何设置,默认为null?

Ja͢*_*͢ck 7

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

例如:

function test(foo)
{
    console.log(foo === undefined); // true
}
Run Code Online (Sandbox Code Playgroud)

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

function test(foo)
{
    console.log(foo || 'default value');
}
Run Code Online (Sandbox Code Playgroud)

以上将输出fooif的真实值或'default value'其他值.

function test(foo)
{
    console.log(foo === undefined ? foo : 'default value');
}
Run Code Online (Sandbox Code Playgroud)

foo如果不是undefined,则输出值'default value'.

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

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

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

进一步考虑

虽然undefined不可写,因为ES5,并不是所有的浏览器都如此警惕强制执行这一点.如果您担心这个问题,可以使用两种方法:

foo === void 0;
typeof foo === 'undefined'; // also works for undeclared variables
Run Code Online (Sandbox Code Playgroud)