【问题标题】:Boolean($var) VS $val ? true : false [closed]布尔($var) VS $val ?真:假[关闭]
【发布时间】:2021-10-01 07:12:00
【问题描述】:

问。哪个更易读?

const emptyValue = "";

Boolean(emptyValue);
// false

VS

const emptyValue = "";

emptyValue ? true : false;
// false

这是一种非常常见的情况,您希望流量根据变量的特定值进行更改。 我知道这在性能方面几乎没有区别,但我真的很好奇社区在可读性方面的选择。

【问题讨论】:

  • 我会说 !!emptyValue 甚至比那些替代品更好。
  • 取决于技能水平。 ? true : false; 在任何技能水平上都应该被认为是可读的。转换到另一种数据类型需要一些时间。
  • 真的取决于上下文。

标签: javascript ecmascript-6


【解决方案1】:

在我看来第二种更具可读性,即:

const emptyValue = "";

emptyValue ? true : false;

但转换为布尔类型的 javascript 方法是:

const emptyValue = "";

!!emptyValue;

! 在后台调用 Boolean(),因此被调用了两次,效率低于单个 Boolean() 解决方案,但我再说一遍是 javascript 方式。

【讨论】:

    【解决方案2】:

    我更喜欢只测试变量名

    如果您需要测试一个数字,它适用于除 0 之外的所有 - 为此您可以使用 !! Double Not

    可以串联使用几个 NOT 运算符来显式强制将任何值转换为相应的布尔原语。转换是基于值的“真实性”或“虚假性”

    const emptyValue = "";
    let undefinedValue;
    const zero = 0;
    const nullValue = null
    const definedVariable = "Hello"
    
    console.log(definedVariable,emptyValue,undefinedValue,zero,nullValue)
    
    console.log(Boolean(definedVariable), Boolean(emptyValue),Boolean(undefinedValue),Boolean(zero),Boolean(nullValue))
    console.log(!!definedVariable ,!!emptyValue,!!undefinedValue,!!zero,!!nullValue)
    
    if (definedVariable) console.log("definedVariable is truthy");
    if (!emptyValue) console.log("emptyValue is falsy");
    if (!undefinedValue) console.log("undefinedValue is falsy");
    if (!zero) console.log("zero is falsy"); 
    if (!!zero) console.log("zero is not falsy with !!"); 
    if (!nullValue) console.log("nullValue is falsy");

    【讨论】:

      猜你喜欢
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多