首页 存档 技术 查看内容

谈谈JavaScript的for循环的几个问题

2018-3-30 13:00 |来自: 互联网 287 0

摘要: 我们一直在使用JavaScript的for循环。但现在,在最新的函数式编程技巧的支持下,过时的它应该退休了。 幸运的是,你不必是一个函数式编程大师,也可以做出这个改变。更幸运的是,这就是你在眼前项目中可以立马做的事 ...

我们一直在使用JavaScript的for循环。但现在,在最新的函数式编程技巧的支持下,过时的它应该退休了。

幸运的是,你不必是一个函数式编程大师,也可以做出这个改变。更幸运的是,这就是你在眼前项目中可以立马做的事情!

那到底JavaScript的for循环有什么问题?

for循环设计本身鼓励改变状态以及产生副作用,这两者都是导致错误和不可预知代码的隐患。

我们都知道全局状态是糟糕的,应该避免。可是,局部状态和全局状态一样糟糕,只是因为局部状态处于一个较小的尺度中,没有引起注意。因此,我们从来没有真正解决问题,而是尽量把问题最小化。

对于可变的状态,在一些未知的时间点,变量会因为某些未知的原因而改变。这时,你要花上数小时进行调试,寻找这个值改变的原因。光为这,我都不知道自己掉了多少把头发了。

下面,我想简单谈谈副作用。这个词听起来就烦人,副作用……妈蛋!难道你会希望自己的程序有什么副作用?当然不!

但什么是副作用?

当一个函数修改了其作用域以外的某些东西时,它就被视为有副作用。可以是改变一个变量的值、读取键盘输入、调用某个API、写入磁盘数据、打印日志,等等。

副作用很强大,但同时也被承担着重大的责任。

副作用应该尽可能被消除,或者封装在内部,或可控。有副作用的函数难以测试也难以推断,所以要尽你所能甩掉它。幸好这里可以不用担心副作用。

好了,闲话少说,上代码。我们看一下这段或许你已经看过上千次典型的for循环:

const cats = [
{ name: 'Mojo', months: 84 },
{ name: 'Mao-Mao', months: 34 },
{ name: 'Waffles', months: 4 },
{ name: 'Pickles', months: 6 }]var kittens = []// 典型的拙劣写法:for循环for (var i = 0; i

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部