访问潜在空/未定义变量的属性-javascript
我正在使用sonarqube分析代码,遇到以下代码的问题:访问潜在空/未定义变量的属性-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变
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) {