【问题标题】:Is this a 'dead code' i.e. is it just redundant?这是一个“死代码”,即它只是多余的吗?
【发布时间】:2021-03-21 21:30:30
【问题描述】:

我在我们的代码库中遇到了这段代码 sn-p:

function initDoughnutChart(target) {
  var labels = $(target).data("labels").toString().split(",");
  var dataString = $(target).data("chart-data").toString();
  // single-entry values
  if (typeof dataString === 'number') {
    dataString = dataString.toString();
  }
  var data = dataString.split(",");
  ...

我是否认为 if 语句是多余的,因为 dataString 已初始化为值 <something>.<something>.toString() 因此它将(总是?)具有 'string' 的类型(除非它的初始化抛出,但根本不会达到 if)。

【问题讨论】:

  • 你检查数字不是字符串对吗?
  • @gavgrif 但是如果有问题的数据属性在传递的target 元素上不存在怎么办? null.toString()undefined.toString() 将停止函数的执行。
  • @gavgrif jQuery 的.data() 可以返回不是字符串的东西,但可以很安全地假设.data(something).toString() 会产生字符串或抛出错误。

标签: javascript jquery tostring


【解决方案1】:

我认为你是对的。我可以将datastring 视为number 的唯一方法是在代码的其他位置定义一个自定义toString(我看不出为什么)。

当然,代码中还有其他注意事项,例如如果 target 未定义,$(target).data("labels"). 将不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    相关资源
    最近更新 更多