访问潜在空/未定义变量的属性-javascript

访问潜在空/未定义变量的属性-javascript,javascript,jquery,sonarqube,Javascript,Jquery,Sonarqube,我正在使用sonarqube分析代码,遇到以下代码的问题: var backtoyear = $('#backtoyear').val(); if (backtoyear != undefined || backtoyear.length > 0) { var currentyear = (new Date()).getFullYear(); var numberofyears = currentyear - backtoyear; } backtoyear.length变

我正在使用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/未定义,因此不会有任何属性


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

您可以简化以下语句

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

这更具可读性、效率和可理解性


参考本规范

我怀疑
|
应该是
&&
;如果
backtoyear
实际上是
undefined
,则不应尝试第二个表达式。要检测
undefined
,您应该使用
typeof
,如下所示
if(typeof backtoyear!==undefined | | backtoyear.length>0)
我非常喜欢这种简化。不过,我希望能多了解一点。通过执行
if(backtoyear)
检查它不能为null或未定义,长度也不能大于(且不等于)0?@测试是,它还检查null、未定义和长度,因为如果为null或未定义,则逻辑上它没有长度。
if (backtoyear) {