Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 如果条件vs循环一项_Javascript_Loops_If Statement_Optimization - Fatal编程技术网

Javascript 如果条件vs循环一项

Javascript 如果条件vs循环一项,javascript,loops,if-statement,optimization,Javascript,Loops,If Statement,Optimization,我只是好奇,是否值得在循环某个数组之前设置if条件,即90%将是1个项目的数组? 代码示例: const a = [3]; const aLength = a.length; if(aLength > 1) { for(let i = 0; i < aLength; i++) { func(i); } } else { func(); } function func(position = 0) { console.log('hi' +

我只是好奇,是否值得在循环某个数组之前设置if条件,即90%将是1个项目的数组? 代码示例:

const a = [3];
const aLength = a.length;
if(aLength > 1) {
    for(let i = 0; i < aLength; i++) {
        func(i);
    } 
} else {
    func();
}

function func(position = 0) {
  console.log('hi' + position);
}
const a=[3];
常数长度=a.长度;
如果(长度>1){
for(设i=0;i
编写干净的代码,让每个人都开心

您可以消除if和循环:

const a=[5,6,3]

a、 forEach((值,索引)=>console.log('hi'+index))我同意Federico的评论,在这种情况下,单个for循环是最可读的

此外,即使您重用了它,将a.length提取为aLength也没有多大意义


const a = [3];
for(let i = 0; i < a.length; i++) {
    func(i);
} 

function func(position) {
  console.log('hi' + position);
}


更重要的是,代码反映了您的意图。不要担心微小的性能问题。@Pointy我也对坏/好的代码实践感兴趣,也许这是禁止的或专有技术,我只是想知道。在这种情况下,我认为不区分这两种情况更具可读性。1元素数组不是特例(即,如果您不强制它看起来像特例,它的行为将完全相同),并且它的行为与更大的数组没有区别。删除if-else将使代码更短、更可读、更高效。为什么
map
而不是
forEach
?是的,对于这个例子,forEach更好。
const a = [3];
if(a.length > 1) {
    handleMultiple(a);
} else {
    handleSingleAndWhyItIsASpecialCase(a)
}

handleMultiple(array) {    
    for(let i = 0; i < array.length; i++) {
        func(i);
    } 
}

handleSingleAndWhyItIsASpecialCase(array) {   
    func();
}

function func(position = 0) {
  console.log('hi' + position);
}