【问题标题】:Is short-hand (type different) true/false comparison good practice on strings?速记(类型不同)真/假比较是字符串的好习惯吗?
【发布时间】:2013-08-11 11:28:13
【问题描述】:

简写(类型不同)真/假比较是字符串的良好编码习惯吗?

例子:

var is_this_true = "Something in here, so not empty.";
if (is_this_true) {}

另外,如果有的话,与严格比较相比,性能如何。
示例:

var is_this_true = true;
if (is_this_true === true) {}


第一个例子是否要经过松散比较(IE,与 == 相同)

【问题讨论】:

  • 好吧,严格比较,那是行不通的。种类不一样。如果您想更明确,您可能需要检查 .length 属性
  • @CrazyTrain:如果是null,就会抛出。
  • @SLaks:是的,我只是在解决速记(类型不同)评估的直接问题。换句话说,假设它是一个字符串,将其传递为布尔值。因此,给定一个字符串,可以通过比较其.length 来明确。
  • 是的。这是我主要关心的问题。我知道那里必须有一个类型转换,所以虽然我知道这是一种公认​​的做法 - 这是否使它成为一种好的编码做法?
  • 这被认为是一种很好的做法,因为人们认为松散的打字是一种很好的语言特性。

标签: javascript performance types casting type-conversion


【解决方案1】:

编写if (x) 会检查x 是否真实——除0''falsenullNaNundefined 之外的任何值。

无论x 是布尔值还是其他值,这都是以相同的方式完成的,并且与强制(“松散”)相等性无关。

【讨论】:

    【解决方案2】:

    如果使用 == 比较,空字符串始终为 false,并且还有以下值:false、''、""、0、null、未定义

    【讨论】:

    • 对不起)仅用于完整列表)
    • 如果您使用== 比较,这些值并非都被同等视为false。如果是,那么null == 0 将是true
    • @CrazyTrain:你是对的;他将虚假与松散的平等混为一谈。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 2023-03-22
    • 2012-06-22
    • 1970-01-01
    • 2019-05-30
    • 2017-08-09
    • 2019-10-06
    相关资源
    最近更新 更多