在同一JavaScript函数中重复使用变量的场景:始终是否?
我刚刚写完一个用于解析csv数据的脚本。最近安装了JShint,它一直在困扰我变量的重用。我最近一直在使用JS,但我来自python背景,在那里重用变量是很正常的。我想知道在以下两个示例中重用变量有什么问题: 带开关的环路 下面的循环逐步遍历csv文件中的行,当它传递行中的某个值时,它会将变量“currentSwitch”从false切换为true。在currentSwitch被触发后,循环开始将内容推送到数组中在同一JavaScript函数中重复使用变量的场景:始终是否?,javascript,node.js,Javascript,Node.js,我刚刚写完一个用于解析csv数据的脚本。最近安装了JShint,它一直在困扰我变量的重用。我最近一直在使用JS,但我来自python背景,在那里重用变量是很正常的。我想知道在以下两个示例中重用变量有什么问题: 带开关的环路 下面的循环逐步遍历csv文件中的行,当它传递行中的某个值时,它会将变量“currentSwitch”从false切换为true。在currentSwitch被触发后,循环开始将内容推送到数组中 for (f=0; f < data.length; f++){
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;
}
}
有人能告诉我这是否与最佳实践不符吗?这两种情况(或类似的情况)是否有任何问题?您不需要重新声明currentSwtich
var currentSwitch = true;
事实上,在循环中间重新声明这个变量真的没有任何意义,在大多数情况下,它几乎肯定不是你真正想要的。
只需在循环开始时初始化/声明一次
var currentSwtich;
// or
var currentSwitch = false;
将var
设置为true时,将其删除:
currentSwitch = true;
基本上,您所做的是创建一个与旧变量同名的全新变量,然后丢弃旧变量。这不是你通常想要的
python中没有类似的概念,因为python不要求您声明变量。您不需要重新声明currentSwtich
var currentSwitch = true;
事实上,在循环中间重新声明这个变量真的没有任何意义,在大多数情况下,它几乎肯定不是你真正想要的。
只需在循环开始时初始化/声明一次
var currentSwtich;
// or
var currentSwitch = false;
将var
设置为true时,将其删除:
currentSwitch = true;
基本上,您所做的是创建一个与旧变量同名的全新变量,然后丢弃旧变量。这不是你通常想要的
python中没有类似的概念,因为python不要求您声明变量。重用变量的主要问题是: a、 )在更大的代码块中,它可能会变得非常混乱,尤其是如果您添加/删除了约20次代码,并且在多个方面重复使用了约5个相同的变量 b、 )任何对代码一无所知的程序员(阅读:几个月/几年后的你)都将很难掌握代码 下面的函数片段可以表示为:
var dataListByCode = addBeforeEntriesArray(addDivideData(dataListByCode), invNumber, matterNumber, client, workType);
这没什么问题。在这种情况下,函数的分解是无用的,如果您有许多内联函数链,这通常表明您需要重新考虑对象/函数设计。重用变量的主要问题是: a、 )在更大的代码块中,它可能会变得非常混乱,尤其是如果您添加/删除了约20次代码,并且在多个方面重复使用了约5个相同的变量 b、 )任何对代码一无所知的程序员(阅读:几个月/几年后的你)都将很难掌握代码 下面的函数片段可以表示为:
var dataListByCode = addBeforeEntriesArray(addDivideData(dataListByCode), invNumber, matterNumber, client, workType);
这没什么问题。在这种情况下,函数的分解是无用的,如果您有许多内联函数链,这通常表明您需要重新考虑对象/函数设计