以下原因导致JSHint说'path' is already defined
。这似乎是有效的,因为我只是将变量重新分配给自己。
for(var i = 0, path = path.split('.'), len = path.length; i < len; i++) {
if(!obj || typeof obj !== 'object') return def;
obj = obj[path[i]];
}
我想保留我对已经定义的真实情况的设置,上面的工作很棒。关于让jshint闭嘴的建议吗?
答案 0 :(得分:0)
您可能已经知道,var i = 0, path = path.split('.'), len = path.length;
相当于var i = 0; var path = path.split('.'); var len = path.length;
,这就是JSHint抱怨重新定义现有变量的原因。
显而易见的解决方案(并且,许多人认为,&#34;最佳实践&#34;)是不重用变量。
for(var i = 0, parts = path.split('.'), len = parts.length; i < len; i++) {
if(!obj || typeof obj !== 'object') return def;
obj = obj[parts[i]];
}
另一种解决方案是将变量重新分配放在循环之外。它不会改变脚本的工作方式,除了现在它不会尝试重新声明变量。
path = path.split('.');
for(var i = 0, len = path.length; i < len; i++) {
if(!obj || typeof obj !== 'object') return def;
obj = obj[path[i]];
}