【问题标题】:Js check if one or more vars are undefinedJs检查一个或多个vars是否未定义
【发布时间】:2014-11-15 15:04:51
【问题描述】:

假设我有多个变量:

var a = 1;
var b = 2;
var c;
var d = 4;
var e;

我想检查其中一个(或多个)是否为空,在本例中为 var c 和 var e。 是否可以一次检查所有内容?

谢谢!

【问题讨论】:

  • 使用 typeof。例如 typeof c === 'undefined'
  • @Claudiu var c; console.log(c);.
  • 空的还有什么意思?
  • @Claudiu 从他的例子和其他答案的 cmets 中我认为很清楚。
  • @Claudiu:检查空的最安全的选择是使用 typeof c === 'undefined'

标签: javascript if-statement var


【解决方案1】:

这是你想要的吗?

var a = 1;
var b = 2;
var c;
var d = 4;
var e;

[a, b, c, d, e].some(function(x){return typeof x === "undefined";});

我不认为javascript有自省功能,所以你不能只找到本地范围内的所有变量。

【讨论】:

    【解决方案2】:

    你不能。如果检查所有这些是您的目标,那么您应该将它们全部分组。

    尝试使用关联数组。

    var items = {
        a:1,
        b:2,
        d:4
    };
    
    //Check empty
    if(items.c === undefined){
        console.log('c is empty');
    }
    

    如果您对项目进行迭代,您将只能获得已设置的变量。所以让我们尝试另一种方式。

    null 是表示项目为空的另一种方式,也许您实际上希望变量存在。

    var items = {
        a:1,
        b:2,
        c:null,
        d:4,
        e:null
    };
    
    //Check empty
    for(var item in items){
        if(items[item] === null){
            console.log(item, 'is empty');
        }
    }
    

    【讨论】:

    • {} in javascript 不是关联数组。为此,您需要Map
    • @simonzack 老实说,我说的是abstract data type
    • @simonzack:目前 JavaScript 中没有 Map。有些人称对象为关联数组。这不是最好的描述,但重点是理解。
    • @cookiemonster 很多地方都实现了它,但是,如果你没有它,你可以使用 polyfill。直接使用{} 是一个糟糕的选择。更好的选择是使用Object.create(null)
    猜你喜欢
    • 2013-06-18
    • 2017-04-12
    • 2013-04-29
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    相关资源
    最近更新 更多