1

我刚刚完成了一个解析 csv 数据的脚本。最近安装了 JSHint,它一直在纠缠我关于变量的重用。我最近一直在使用 JS,但我来自 python 背景,重用变量是正常的。我想知道在以下两个示例中重用变量有什么问题:

用开关循环

以下循环遍历 csv 文件上的行,当它连续传递某个值时,它将变量“currentSwitch”从 false 切换为 true。currentSwitch 触发后,循环开始将内容推送到数组。

for (f=0; f < data.length; f++){
        if (data[f][0] === code){
            if (currentSwitch === true){
                dataListByCode.push(data[f]);
            }
        }
        else if ((data[f][0]).slice(0,4) === "UNIN"){
            var currentSwitch = true;
        }
    }

使用中断函数处理数据

我有一些处理数据的函数,将它们分开是有意义的。在下面的代码中,我使用一个函数进行处理,然后使用另一个函数进行处理。

var dataListByCode = addDivideData(dataListByCode);
var dataListByCode = addBeforeEntriesArray(dataListByCode, invNumber, matterNumber, client, workType);

谁能告诉我这是否不符合最佳实践?这些(或类似的场景)有什么问题吗?

4

2 回答 2

1

你不需要重新声明 currentSwtich

var currentSwitch = true;

事实上,在循环中间重新声明这个变量真的没有任何意义,而且在大多数情况下,它几乎肯定不是你真正想要的。

只需在循环开始时初始化/声明一次

var currentSwtich;
// or
var currentSwitch = false;

var在您将其设置为 true 时删除:

currentSwitch = true;

基本上你正在做的是创建一个与旧变量同名的全新变量,并丢弃旧变量。这不是你通常想要的。

python 中没有类似的概念,因为 python 不需要你声明变量。

于 2013-07-13T08:04:05.353 回答
0

重用变量的主要问题是:

a.) 在更大的代码块中,它可能会变得非常混乱,特别是如果您添加/删除代码约 20 次,并为多个事物重复使用相同的约 5 个变量

b.)任何对代码一无所知的程序员(阅读:几个月/几年后的你)将很难掌握代码。

下面的函数片段可以表示为:

var dataListByCode = addBeforeEntriesArray(addDivideData(dataListByCode), invNumber, matterNumber, client, workType);

这不是那么成问题。在这种情况下,函数的分解是没有用的,如果你有很多内联函数链,这通常表明你需要重新考虑对象/函数的设计。

于 2013-07-13T08:12:29.357 回答