我需要关注:
function(arg) {
if (undefined was passed explicitly)
//case 1
if (no parameter was passed)
// case 2
}
这可能吗? 下一个陈述在案件之间没有区别:
typeof args === 'undefined'
args === undefined
args === null
答案 0 :(得分:1)
我会做这样的事情:
function test(...args) {
if (args.length && typeof args[0] === 'undefined') {
console.log('explicitly undefined');
} else {
console.log('just undefined');
}
}
spread运算符会将任何传递的参数扩展为数组。如果数组长度为零,则不传递任何内容,因此undefined
是隐式的。如果是数组长度,那么我们可以明确检查它的类型。
答案 1 :(得分:1)
您可以使用javascript rest or spread operator ...来定义函数参数。
function call(...args){
if(args.length == 0)
{
console.log("no args passed");
}
else if(args[0] == undefined || args[0] == 'undefined'){
console.log("args is undefined");
}
else
{
console.log(args);
}
}
call(undefined);
call('undefined');
call(null)
call(1,2,4);
call();