【发布时间】:2017-03-16 12:19:55
【问题描述】:
这是我的代码:
const a = function(obj) {
for (let key in obj) {
if (!obj.hasOwnProperty(key)) {
continue;
}
console.info(key.split('_'));
}
};
a({a_b: 123});
我认为完全没有问题,但 SonarQube 给了我一个严重错误:
TypeError 可以抛出,因为这里的“key”可能为 null 或未定义。
key.split('_') 中的key 字样突出显示。表示变量键在这里可以是未定义/空的。
我尝试传入 {[undefined]: 123} 之类的东西,变量 key 变成了字符串“未定义”而不是真正的未定义。
因此。我想知道在任何可能的情况下密钥是否未定义/为空?还是只是误报?
这是截图:
【问题讨论】:
-
@Aᴍɪʀ 这是一个错字,console.info 在 for 循环中,错误仍然存在。
-
嗯。也许 SonarQube 中存在错误。我从来没有使用过它。对象中的键总是字符串,所以
key不可能变成undefined。 -
@guest271314 不,这只是控制台评估命令的输出。
-
@guest271314 试试
for (let j in {}) console.log('x:'+j),看看你得到了什么。 -
@Aᴍɪʀ 他已经删除了它们......无论如何,感谢您指出“对象中的键始终是字符串”这一事实。我之前肯定在其他地方读过那句话,现在我才认出来。那应该是SonarQube的bug。
标签: javascript sonarqube