【问题标题】:initialize var with integer : zero == false用整数初始化 var:零 == false
【发布时间】:2021-12-31 10:15:07
【问题描述】:

如何在 JS 中正确初始化 Int 变量?

var h = {
  baz: 0
} // or {} has same result => 42

function foo(opt) {
  opt.baz ||= 42;

  return opt.baz;
}

foo(h);

这是因为 0 == false 为真...

那么我怎样才能正确定义我的变量默认值呢?

【问题讨论】:

    标签: javascript integer default-value


    【解决方案1】:

    你可以使用Logical nullish assignment:

    var h = {baz: 0}
    
    function foo(opt){
      opt.baz ??= 42;
    
      return opt.baz;
    }
    
    console.log(foo(h));

    UPD:如果你需要处理NaN:

    var h = {baz: NaN}
    
    function foo(opt){
      var defaultOpt = { baz: 42 }
      opt.baz = Number.isNaN(opt.baz)
        ? defaultOpt.baz
        : opt.baz ?? defaultOpt.baz;
    
      return opt.baz;
    }
    
    console.log(foo(h));

    【讨论】:

    • 这不适用于 NaN :'(
    • @Matrix 更新刚刚添加了 NaN 处理
    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2015-10-02
    • 2018-07-26
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    相关资源
    最近更新 更多