【问题标题】:Var's boolean value in JavaScriptJavaScript 中 Var 的布尔值
【发布时间】:2015-07-15 05:39:10
【问题描述】:

我不是 JavaScript 专家,我想知道是否有一种方法可以测试 javascript 中变量的布尔值。

在 Python 中我可以这样做:

>>>list_var = []
>>>bool(list_var)
False  # This is the boolean value of a empty list
>>>

如果我尝试在 JS 中获取一个不存在的元素,即:

document.getElementById('b-advanced')
[]  // This is what returns

有没有办法在不使用if... 语句的情况下将上面的表达式测试为布尔值?

编辑

我想我需要指出一些事情。

这是我使用的完整表达方式:

angular.element(document.getElementById('b-advanced'))

【问题讨论】:

  • getElementById 永远不会返回一个数组。它要么返回一个 DOM 元素,要么返回 null
  • 好吧,我在 angular.element() 函数中使用了该表达式。
  • 这有什么不同?
  • 你是对的,他们不会返回相同的。 postimg.org/image/wix57vk55

标签: javascript python angularjs


【解决方案1】:

没有。你能做的最好的就是list_var.length === 0。对于完整的测试,您需要进行如下测试

// Return true if arg is an array or string containing at least one item
function isTrueness(arg) {
    return !!(arg && arg.length > 0);
}

angular.element(isTrueness(document.getElementById('b-advanced')));

【讨论】:

  • 这是一个好方法。我来自 python,空数组等同于 true 对我来说没有意义。
【解决方案2】:

您可以在前面使用!!,它将返回其布尔状态。

!![] // true
!!null // false

【讨论】:

  • 所以,一个空数组等价于true?
  • 正确!请参阅Conflicting boolean values of an empty Javascript Array 以获得对此的详细解释 :)
  • 这真是出乎我的意料。谢谢你的回答。
  • 如果您发现此答案有帮助,请考虑接受。了解更多关于接受答案here
  • 我认为这是最简单的方法。没有函数,没有 if 语句。
【解决方案3】:
var x = Boolean(document.getElementById('b-advanced'));

Boolean 是布尔值的包装器。

【讨论】:

    【解决方案4】:

    您可以使用typeof 来测试变量的类型,例如:

    var myVar = true;
    if (typeof myVar === "boolean") console.log("It is a boolean");
    

    【讨论】:

    • 请注意,出于某种原因,OP 特别希望避免使用 if 语句。但是,我不确定这是一种可能性。无论如何,如果 JS 使用的各种松散定义变量为空,if(emptyVar) 将等同于 false。
    • 感谢您的回答,但这并不是我所要求的。在 JS 中:[] 等价于 false?
    • 我明白了...您正在使用 getElementyById 来获取该值。正如其他人指出的那样,它只会返回 null 或 DOM 元素,所以我不确定在哪种情况下它甚至会返回一个数组,即 [] 在 JS 中的数组
    • @Gocht:每个对象在 JavaScript 中都是“真实的”,所以不是。
    • 您是否尝试获取元素的文本或属性?
    【解决方案5】:

    在 Python 中,空列表是错误的。在 Javascript 中,空数组为真。你可以通过说myArray.length && myArray 来模仿这一点。如果myArray 为空,则其长度为零,表达式为假。如果myArray 不为空,则 Javascript 会返回第二个操作数,就像 Python 一样。

    【讨论】:

      猜你喜欢
      • 2010-10-13
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 2014-12-11
      • 1970-01-01
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      相关资源
      最近更新 更多