是否有标准函数检查JavaScript中的null,undefined或空白变量?

是否有一个通用的JavaScript函数检查一个变量的值,并确保它不undefined还是null我有以下代码,但不确定是否涵盖所有情况:

function isEmpty(val){
    return (val === undefined || val == null || val.length <= 0) ? true : false;
}
JinJin宝儿2020/03/09 18:20:08

尽管很老套,但忘记的是他们应该包装自己的代码块,然后捕获错误,然后进行测试...

function checkup( t ){
  try{
    for(p in t){
      if( p.hasOwnProperty( t ) ){
        return true;
      }
    }
    return false;
  }catch(e){
    console.log("ERROR : "+e);
    return e;
  }
}

因此,您真的不必事先检查潜在的问题,只需抓住它,然后按需要进行处理即可。

Tony阳光2020/03/09 18:20:08

我认为使用?操作员稍微干净一点。

var ? function_if_exists() : function_if_doesnt_exist();
西里阳光2020/03/09 18:20:08
var myNewValue = myObject && myObject.child && myObject.child.myValue;

这将永远不会引发错误。如果myObjectchildmyValue为null,则myNewValue将为null。没有错误将被抛出

LEYPro达蒙2020/03/09 18:20:08
function isEmpty(val){
    return !val;
}

但是此解决方案是过度设计的,如果您以后不想为业务模型需求修改功能,那么直接在代码中使用它更干净:

if(!val)...
凯斯丁2020/03/09 18:20:08

尝试不同的逻辑您可以使用下面的代码检查所有四(4)条条件以进行验证,例如not null,not blank,not undefined和not zero,仅在javascript和jquery中使用此代码(!(!(variable)))。

function myFunction() {
    var data;  //The Values can be like as null, blank, undefined, zero you can test

    if(!(!(data)))
    {
        alert("data "+data);
    } 
    else 
    {
        alert("data is "+data);
    }
}
米亚宝儿2020/03/09 18:20:08

这可能是有用的。

数组中的所有值都表示您想要的内容(空,未定义或其他内容),然后在其中搜索所需内容。

var variablesWhatILookFor = [null, undefined, ''];
variablesWhatILookFor.indexOf(document.DocumentNumberLabel) > -1
蛋蛋LEY2020/03/09 18:20:08

如果尚未声明该变量,则将无法使用函数测试未定义变量,因为会出现错误。

if (foo) {}
function (bar) {}(foo)

如果尚未声明foo,则两者都将产生错误。

如果要测试是否已声明变量,可以使用

typeof foo != "undefined"

如果要测试是否已声明foo并且它具有一个值,则可以使用

if (typeof foo != "undefined" && foo) {
    //code here
}
GreenMandy2020/03/09 18:20:08

这是我的-如果value为null,undefined等或空白(即仅包含空格),则返回true:

function stringIsEmpty(value) {

    return value ? value.trim().length == 0 : true;

}
用户70493023002020/03/09 18:20:08

你有点过分了。要检查变量是否没有值,只需要检查undefined和null。

function isEmpty(value){
    return (typeof value === "undefined" || value === null);
}

假设0""和对象(甚至是空对象和数组)都是有效的“值”。

小卤蛋卡卡西2020/03/09 18:20:08

检查空字符串(“”),null,undefined,false以及数字0和NaN。说,如果字符串为空,var name = ""console.log(!name)返回true

function isEmpty(val){
  return !val;
}

如果val空,null,未定义,false,数字0或NaN,则此函数将返回true

要么

根据您的问题域,您可以只使用like !val!!val

Gil番长2020/03/09 18:20:08

此条件检查

if (!!foo) {
    //foo is defined
}

是你所需要的全部。

2020/03/09 18:20:08

如果您更喜欢纯JavaScript,请尝试以下操作:

  /**
   * Checks if `value` is empty. Arrays, strings, or `arguments` objects with a
   * length of `0` and objects with no own enumerable properties are considered
   * "empty".
   *
   * @static
   * @memberOf _
   * @category Objects
   * @param {Array|Object|string} value The value to inspect.
   * @returns {boolean} Returns `true` if the `value` is empty, else `false`.
   * @example
   *
   * _.isEmpty([1, 2, 3]);
   * // => false
   *
   * _.isEmpty([]);
   * // => true
   *
   * _.isEmpty({});
   * // => true
   *
   * _.isEmpty('');
   * // => true
   */

function isEmpty(value) {
    if (!value) {
      return true;
    }
    if (isArray(value) || isString(value)) {
      return !value.length;
    }
    for (var key in value) {
      if (hasOwnProperty.call(value, key)) {
        return false;
      }
    }
    return true;
  }

否则,如果您已经在使用下划线或破折号,请尝试:

_.isEmpty(value)
小小小胖2020/03/09 18:20:08
function isEmpty(value){
  return (value == null || value.length === 0);
}

这将返回true

undefined  // Because undefined == null

null

[]

""

和零参数函数,因为函数length是它所使用的已声明参数的数量。

要禁止使用后一种类别,您可能只需要检查空白字符串即可

function isEmpty(value){
  return (value == null || value === '');
}
十三西里GO2020/03/09 18:20:08

评分最高的第一个答案是错误的。如果值未定义,它将在现代浏览器中引发异常。您必须使用:

if (typeof(value) !== "undefined" && value)

要么

if (typeof value  !== "undefined" && value)
飞云Mandy飞云2020/03/09 18:20:08

您可能会发现以下功能有用:

function typeOf(obj) {
  return {}.toString.call(obj).split(' ')[1].slice(0, -1).toLowerCase();
}

或在ES7中(如果有进一步改进,请评论)

function typeOf(obj) {
  const { toString } = Object.prototype;
  const stringified = obj::toString();
  const type = stringified.split(' ')[1].slice(0, -1);

  return type.toLowerCase();
}

结果:

typeOf(); //undefined
typeOf(null); //null
typeOf(NaN); //number
typeOf(5); //number
typeOf({}); //object
typeOf([]); //array
typeOf(''); //string
typeOf(function () {}); //function
typeOf(/a/) //regexp
typeOf(new Date()) //date
typeOf(new WeakMap()) //weakmap
typeOf(new Map()) //map

“请注意,绑定操作符(::)根本不是ES2016(ES7)的一部分,也不是ECMAScript标准的任何更高版本。它目前是该语言引入的阶段0(strawman)建议。” –西蒙·凯贝格(Simon Kjellberg)。作者希望对这个美丽的接受皇家提升的提议表示支持。

布雷西2020/03/09 18:20:08

检查value是undefined还是null的详细方法是:

return value === undefined || value === null;

您还可以使用==运算符,但这希望人们知道所有规则

return value == null; // also returns true if value is undefined