How to set a variable passed on to a function as null in JavaScript
假设我有一个javascript函数:
1 2 3 | function something (variable) { console.log(variable); } |
如何设置如果没有传递变量,则默认为空?
当调用函数时,javascript对于所需函数参数的数量不是很挑剔;声明中提到但未传递的任何参数都将设置为
例如:
1 2 3 4 | function test(foo) { console.log(foo === undefined); // true } |
要设置默认值,至少有三个选项:
1 2 3 4 | function test(foo) { console.log(foo || 'default value'); } |
如果是真的,上面将输出EDOCX1的值(5),否则输出EDOCX1的值(6)。
1 2 3 4 | function test(foo) { console.log(foo === undefined ? foo : 'default value'); } |
如果不是
最后,您可以计算传递的参数数:
1 2 3 4 | function test(foo) { console.log(arguments.length > 0 ? foo : 'default value'); } |
如果传递了参数,则将输出EDOCX1的值(无论其类型如何)。
进一步考虑虽然自ES5以来,
1 2 | foo === void 0; typeof foo === 'undefined'; // also works for undeclared variables |
以上所有的方法都是可行的,但这是最简单的方法,我使用的最多。
1 | variable = variable ? variable : undefined; // you can use null as well |
它应该简单到:
1 2 3 | function something (variable) { console.log(variable || null); } |
通常,您可以将默认值分配给如下参数:
1 2 3 4 5 6 | function something (somevar1, somevar2 /* ... somevarn */) { somevar1 = somevar1 || 'somevar1 not present'; somevar1 = somevar2 || 2; somevar3 = somevar3 || {foo: 'bar', foobar: null} /* etc. */ } |
或者,如果您需要防御
1 2 3 4 | function something (somevar1) { somevar1 = ['', 0, false, null, undefined].indexOf(somevar1) > -1 && null || somevar1; } |
或者更友好的选择是:
1 2 3 4 5 6 7 8 9 10 11 12 | function getProfile( singleVariable ) { singleVariable = singleVariable || false; if (singleVariable) { alert('we have a var') } else { alert('nothing opassed'); } } getProfile(); getProfile('tom'); |
然后,当您开始传递大量参数,但希望函数灵活时,可以执行以下操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 | function getProfile(params) { params = params || {}; if (params.username) { alert(params.username) } if (params.id) { alert(params.id); } } getProfile(); getProfile({username:'tom', id: 123654987}); |
而不是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function getProfile(singleVariable, otherVar, othervar2) { singleVariable = singleVariable || false; otherVar = otherVar|| false; otherVar2 = singleVariable2 || false; if( singleVariable ){ alert('we have a var') } else { alert('nothing opassed'); } } getProfile('tom', false, 'smith'); |
这是必须的,很烦人。通过一个卑鄙的人更有效
像这样测试变量的值:
1 2 3 | function something (variable) { variable = (typeof variable !== 'undefined') ? variable : null; } |
您可以检查
https://developer.mozilla.org/en-us/docs/web/javascript/reference/functions_and_function_scope/arguments
1 2 3 4 5 6 | function something (variable) { if(arguments.length===0){console.log("variable is null");} else{ console.log(variable); } } |
还可以在这里查看以检查变量是否为空,
如何确定变量是"未定义"还是"空"?