繁体   English   中英

在“每个”循环内或外的JavaScript声明函数

[英]JavaScript declaring function in or outside 'each' loop

我没有问题,对一个非常了解js的人来说只是一个问题。 是在“每个循环”中声明并运行一个函数还是在外部进行声明然后在循环中运行更好? 我在某处读到,如果在每个循环中声明函数,则JS编译器进程声明的循环次数与循环将运行的时间相同,但是当您在循环JS进程外部声明函数时,它只运行一次,然后可以轻松地每次运行它。环。 在循环外声明函数是否正确,是否更好?或者在两种情况下,JS语言和代码执行都将花费相同的时间?

诚然,在循环中声明的函数不是一个函数,它与循环的迭代一样多。 并非总比在循环外拥有一个函数好或坏,这是不对的。

有时候,这正是您想要的,例如,如果您想从循环内部封闭变量:

 // Creates 5 functions and calls them 500 ms apart for ( let i = 1; i <= 5; i ++ ) { setTimeout( log_i, i*500 ); function log_i ( ) { console.log( i ); } } 

要么

 // Creates 5 functions and calls them 500 ms apart [1,2,3,'foo','bar'].forEach( function ( x, i ) { setTimeout( log_x, (i+1)*500 ); function log_x ( ) { console.log( x ); } } ); 

对于常规对象,甚至只包含原始元素的变量,都是相同的。 如果每次迭代都需要一个不同的变量,则必须在循环中声明它(使用letconst )。 如果您可以在所有迭代中共享一个副本,则无需为每个迭代都创建一个副本,但是对于小型对象和基元,如果可以使代码更简洁,则绝对应该创建一个副本。

对于可以在所有迭代中共享的非常大的对象和函数,通常最好在循环外创建它,但我强调,它实际上必须是非常大的对象或具有数千次迭代的循环。

我个人更喜欢在循环之外声明函数,因为您已经注意到,它们仅被处理一次。 由于循环的本质是迭代,因此JS将不断调用并创建函数。 这可能会导致性能问题。 但是,这并不是说您永远不要使用这种方法。 这完全取决于您的程序的体系结构和逻辑。

在每个循环中声明该函数没有任何意义。 您可以在循环外部声明函数,并最终为每个循环传递不同的参数,以调用外部声明的函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM