检查变量是否未定义

时间:2018-03-30 21:55:32

标签: javascript function undefined-reference

是否可以使用一个函数来检查提供给它的任何参数是否未定义?我正在尝试以下

let a = 5;
let c = "hello";

isDefined(a, b, c); // gives false
isDefined(a, c); // gives true

但是,如果我传递一个未定义的参数,它会给我一个错误:

  

未捕获的ReferenceError:b未定义

更新

样本用法:

{{1}}

3 个答案:

答案 0 :(得分:0)

我看到它工作的唯一方法是在try / catch中包装isDefined。您的示例用法必须按如下方式进行修改:

let a = 5;
let c = "hello";

try{
  isDefined(a, b, c); // gives false
}catch(e){
  // ... some code that can return false
}
try{
  isDefined(a, c); // gives true
}catch(e){
  // ... some code
}

这是一个有效的例子:



let a = 5;
// b isn't a thing 
let c = 'hello';
let d = null;
let e;


function isDefined() {
 !arguments;
 for (arg in arguments) {
  if(arguments[arg] === null || arguments[arg] === undefined) {
    return false;
  }
 }
 return true;
}


console.log(`isDefined(a, c): Result: ${isDefined(a, c)}`);
//you'd have to wrap isDefined in a try/catch if you're checking for this
try{
  console.log(`try{isDefined(a, b, c)}catch(e){...}: Result: ${isDefined(a, b, c)}`);
}catch(err){
  console.log('try{isDefined(a, b, c)}catch(e){...}: Result: false');
}

console.log(`isDefined(d) Result: ${isDefined(d)}`);
console.log(`isDefined(e): Result: ${isDefined(e)}`);




答案 1 :(得分:0)

function isDefined() {
    return !Array.from(arguments).includes(undefined);
}

答案 2 :(得分:-2)

undefined的值为null。 数组中的任何未定义元素都返回null。

function isDefined() {
    for (var i = 0; i < arguments.length; i++)
        if (arguments[i]==null) return false;
    return true;
}