【问题标题】:accessing property of potential null/undefined variable - javascript访问潜在的空/未定义变量的属性 - javascript
【发布时间】:2019-09-12 16:57:03
【问题描述】:

我正在使用 sonarqube 分析我的代码,但遇到以下代码的问题:

var backtoyear = $('#backtoyear').val();

if (backtoyear != undefined || backtoyear.length > 0) {
   var currentyear = (new Date()).getFullYear();
   var numberofyears = currentyear - backtoyear;
}

backtoyear.length 变量导致“TypeError 可以抛出,因为“backtoyear”在此处可能为 null 或未定义。”因为它可能是 null/undefined,因此不会有任何属性。

我应该从 if 条件中删除 OR 的第二个吗?

【问题讨论】:

  • 我怀疑|| 应该是&&;如果backtoyear 实际上是undefined,则不应尝试第二个表达式。
  • 要检测undefined,您应该使用typeof,如下所示if (typeof backtoyear !== undefined || backtoyear.length > 0)

标签: javascript jquery sonarqube


【解决方案1】:

您可以简化以下语句,

if (backtoyear != undefined || backtoyear.length > 0) {

if (backtoyear) {

这样更易读、更高效、更易理解。

参考本规范ToBoolean

【讨论】:

  • 我真的很喜欢这种简化。但是,我希望更好地理解。只需执行if (backtoyear) 即可检查它不能为空或未定义,并且长度是否也大于(且不等于)0?
  • @testing 是的,它还会检查 null、undefined 和 length,因为如果它是 null 或 undefined,那么逻辑上它没有长度。
猜你喜欢
  • 2016-05-08
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多