这是一个由for循环触发的感想。哪里写的不好欢迎拍砖。对格式有要求的 请移步: http://51viola.top

重构片段一:循环

举例:之前习惯顺着逻辑思路一层层往下写

function test1(arr) {    for (let i = 1; i < arr.length; i++) {        arr[i] *= 2        if (arr[i] % 2 === 0) {            doSomething(arr[i])       }   }}

声明式方式重写这段代码

function test1(arr) {    const evenNumbers = n => n % 2 === 0​    arr.slice(1)       .map(v => v * 2)       .filter(evenNumbers)       .forEach(v => doSomething(v))    }

<!-- more -->

紧接着上面demo看

重构片段二:常用的处理数组的方法

slice — arrayObject.slice(start,end)

slice 返回一个子数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

不设定end参数,表示获取从start 到 数组结尾的所有元素。

map
arr.map([1, 2, 3], function(num){ return num * 3; });=> [3, 6, 9]

通过对数组里的每个元素调用转换函数(iteratee迭代器)生成一个与之相对应的数组。

filter

遍历数组中的每个值,返回所有通过函数真值检测的元素所组成的数组。

重构片段三:使用箭头函数

箭头函数是es6中新语法

var reflect = function(value) {    return value;};

等同于:

let reflect = value => value; 

let也是es6新语法,我理解的是它比var更严谨,因为let声明的变量只在所在的代码块内有效

如果只有一个表达式,大括号{...}和return都可以省略.

那么问题来了- 我们为什么使用箭头函数?

我们暂且不谈代码更加简洁 这个事,更重要的是,this总是指代外层调用对象,这样就不再需要var that = this.

转载于:https://www.cnblogs.com/zhaoyawei/p/7821879.html

如何更优雅的写for循环相关推荐

  1. python要在哪里写代码-如何更优雅地写python代码

    前言 Python 这门语言最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净.整洁.一目了然.但有时候我们写代码,特别是 Python 初学者,往往还是按照其它语言的思维习惯来写,那样的写法不 ...

  2. 如何更优雅的写出你的SQL语句

    毫无疑问,编写代码是一门艺术而非科学,没有程序员可以编写出既可读又可维护的漂亮代码,即使有经验也是如此. 一般来说,当您学习编码的艺术时,编码水平会随着经验而提高,例如,你会变得更喜欢组合而不是继承或 ...

  3. 表驱动法(更优雅的写if-else、switch-case)

    表驱动法 表驱动法就是一种编程模式(scheme)--从表里面查找信息而不使用逻辑语句(if 和case).事实上,凡是能通过逻辑语句来选择的事物,都可以通过查表来选择.对简单的情况而言,使用逻辑语句 ...

  4. JavaScript复杂判断的更优雅写法

    前提 我们编写js代码时经常遇到复杂逻辑判断的情况,通常大家可以用if/else或者switch来实现多个条件判断,但这样会有个问题,随着逻辑复杂度的增加,代码中的if/else/switch会变得越 ...

  5. JavaScript 复杂判断的更优雅写法

    我们编写js代码时经常遇到复杂逻辑判断的情况,通常大家可以用if/else或者switch来实现多个条件判断,但这样会有个问题,随着逻辑复杂度的增加,代码中的if/else/switch会变得越来越臃 ...

  6. js中如何优雅的写if判断

    我们编写js代码时经常遇到复杂逻辑判断的情况,通常大家可以用if/else或者switch来实现多个条件判断,但这样会有个问题,随着逻辑复杂度的增加,代码中的if/else/switch会变得越来越臃 ...

  7. 【转】转自微信公众号 JavaScript 复杂判断的更优雅写法

    与微信公众号看到一篇js复杂判断的文章,对我启发很大,故转到博客园以供后期不断学习并应用于项目.原文地址:https://mp.weixin.qq.com/s/ClFDRj4MnAxv1dJ5VWKS ...

  8. 更效率、更优雅 | 阿里巴巴开发者工具不完全盘点

    简介: 阿里巴巴将自身在各类业务场景下的技术积淀,通过开源.云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率.更优雅的写代码. 从人工到自动化,从重复 ...

  9. 9条消除if...else的锦囊妙计,助你写出更优雅的代码

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 前言 最近在做代码重构,发现了很多代码的烂味道.其他的不多说 ...

最新文章

  1. vue aplayer 进度条无法拖动_为 Vue 的惰性加载加一个进度条
  2. C++容器适配器之priority_queue
  3. 采取监测记录网络运行状态_广播播控监测自动化系统改造探析
  4. 重邮2019计算机考研复试名单,重庆邮电大学2019年硕士研究生招生复试通知
  5. JavaScript学习笔记:类型检测
  6. java 获取文件大小_阿里Java后端开发面经,面试官都替我感到绝望
  7. 利用jQuery点击DIV变颜色的小例子
  8. 华为云发力分布式云,折射出云计算哪些定势?
  9. 新建pch文件及配置
  10. 如何解决Word里插入图片会被压缩
  11. 6.形容词性物主代词用法
  12. 2018在职计算机科学硕士申请,2018年哪些学校计算机在职研究生专业比较好
  13. html 中怎样显示enum,enum怎么读音发音
  14. 训练诗词生成模型(GPT2)的一点心得
  15. 回眸 2020,展望 2021
  16. Gitblit创建版本库并提交项目到版本库
  17. xxl_job部分源码解读
  18. [Chatter] 架构设计是做甚么
  19. 地级市房价月度数据(2009-2021)
  20. EXCEL怎么隔3行插入1空行?

热门文章

  1. linux 重复模式元字符,Linux 正则表达式 vi, grep, sed, awk
  2. C++轻量级微服务_微服务的部署
  3. 9个元素换6次达到排序序列_面试题精选(排序算法类)c/c++版 上篇
  4. TED 演讲 How we can control the coronavirus pandemic? 我们如何控制新冠病毒的传播 ?
  5. 盘点七大类当前世界流行的数据挖掘技术
  6. 圣斗士星矢服务器维护时间,《圣斗士星矢》6月27日服务器数据互通公告
  7. element 使用阿里图标变形了_2TB不限速的阿里网盘App来了 终于不再忍受众生平等盘...
  8. 电脑硬盘分区合并_简单扩容电脑C盘,无需U盘重装系统
  9. 人脸对齐(三)--AAM算法
  10. MCU——矩阵键盘扫描问题记录