Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在同一JavaScript函数中重复使用变量的场景:始终是否?_Javascript_Node.js - Fatal编程技术网

在同一JavaScript函数中重复使用变量的场景:始终是否?

在同一JavaScript函数中重复使用变量的场景:始终是否?,javascript,node.js,Javascript,Node.js,我刚刚写完一个用于解析csv数据的脚本。最近安装了JShint,它一直在困扰我变量的重用。我最近一直在使用JS,但我来自python背景,在那里重用变量是很正常的。我想知道在以下两个示例中重用变量有什么问题: 带开关的环路 下面的循环逐步遍历csv文件中的行,当它传递行中的某个值时,它会将变量“currentSwitch”从false切换为true。在currentSwitch被触发后,循环开始将内容推送到数组中 for (f=0; f < data.length; f++){

我刚刚写完一个用于解析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;
        }
    }

有人能告诉我这是否与最佳实践不符吗?这两种情况(或类似的情况)是否有任何问题?

您不需要重新声明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);
这没什么问题。在这种情况下,函数的分解是无用的,如果您有许多内联函数链,这通常表明您需要重新考虑对象/函数设计