在同一个JavaScript函数中重用variables的情况:总是否定的?

我刚写完脚本来parsingcsv数据。 最近安装了JShint后,我重新使用了variables。 我最近一直在使用JS,但是我来自一个python背景,重用variables是正常的。 我想知道在下面两个例子中重用variables有什么问题:

用开关循环

下面的循环遍历csv文件中的行,当它传递一个特定的值时,它将variables“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); 

谁能告诉我,如果这不符合最佳做法? 这些(或者像他们这样的场景)有什么可能出错的吗?

你不需要重新声明currentSwtich

 var currentSwitch = true; 

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

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

 var currentSwtich; // or var currentSwitch = false; 

并将其设置为true时删除var

 currentSwitch = true; 

基本上你正在做的是创造一个全新的variables,与旧的variables相同,扔掉旧的variables。 这通常不是你想要的。

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

重用variables的主要问题是:

a。)在更大的代码块中会变得非常混乱,特别是如果您添加/删除了代码〜20次,并且保持重复使用〜5个variables用于多个事物

b。)任何对代码一无所知的程序员(在几个月/几年之后都会读到)会让您更难以掌握代码。

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

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

这是没有问题的。 在这种情况下,分解函数是没有用的,如果你有许多内联函数链,通常表明你需要重新思考对象/函数devise。