Javascript:即使未定义函数,如何处理函数的参数

时间:2019-06-14 05:09:37

标签: javascript

我正在创建一个函数,以检查给定值是否为空,如果未定义,则等于空字符串,或者长度为零,它将返回true。这是我完成的事情

isEmpty(value){
    if(typeof(value)=='undefined'){
        return true;
    }
    else if(value==''||value.length==0){
        return true;
    }
    return false;
}

但是当我评估一些未定义的变量(例如isEmpty(foo))时,它将抛出未捕获的引用错误,但是我想返回true,该怎么做?

function isEmpty(value) {
  if (typeof(value) == 'undefined') {
    return true;
  } else if (value == '' || value.length == 0) {
    return true;
  }
  return false;
}

console.log(isEmpty(value))

2 个答案:

答案 0 :(得分:3)

您了解Undefined错误

  

未定义表示已声明变量,但该变量的值   变量尚未定义(尚未分配值)。例如:

function isEmpty(value){

// or simply value===undefined will also do in your case
  if(typeof(value)==='undefined'||value==''||value.length==0){
        return true;
    }
  return false;
        
}
let foo; // declared but not assigned a value so its undefined at the moment
console.log(isEmpty(foo))


   

添加-什么是未捕获ReferenceError:未定义“ x”。

  

某处引用了一个不存在的变量。这个变量   需要声明,或者您需要确保它在您的文档中可用   当前脚本或范围。

很显然,您没有在上下文中的任何地方引用变量,所以您会收到该异常。Follow Up Link

这是通过捕获引用错误来检查变量是否在范围内或是否已声明的方法

// Check if variable is declared or not

//let value;
try {
  value;
} catch (e) {
  if (e.name == "ReferenceError") {
    console.log("variable not declared yet")
  }


}

// or the function approach


function isEmpty(value){

// or simply value===undefined will also do in your case
  if(typeof(value)==='undefined'||value==''||value.length==0){
        return true;
    }
  return false;
        
}


try {
  isEmpty(value);
} catch (e) {
  if (e.name == "ReferenceError") {
    console.log("variable not declared yet")
  }
}

答案 1 :(得分:0)

这就是您要寻找的,是对value===undefined首个修复程序的测试。

const isEmpty = (value) => value===undefined||typeof(value)==='undefined'||value===''||value.length===0;

let foo;
let bar = 'test';

console.log(isEmpty());
console.log(isEmpty(foo));
console.log(isEmpty(bar));