let && const

  • 在ES6中,let和const是为了取代var,主要体现在块级作用域上,我们
    可以简单的理解为大括号内的就属于块级作用域

    if(true){let a=1;const b=1;
    }
    console.log(a) //a is undefined
    console.log(b) //b is undefined
    复制代码
  • let声明的变量是可以改变的,而const是无法重新赋值

    const obj={a:1};
    obj.a=2; //合法的  obj={a:2}
    obj={a:2}; // 会在编译时报错复制代码

import && export

  • 在js的模块化经历过AMD,CMD,common.js等一系列实现方式后,ES6提供了内置的模块化解决方案,和common.js的类似,采用export导出模块,import导入模块,使前端的模块化变得更加清晰简洁
  • 那和common.js有什么不同呢?
    • ES6的导入导出属于静态化,必须在顶部,且不能使用条件语句,自动会采用严格模式
    • ES6能在编译时优化和treeshaking,因为ES6模块化是静态的,所以在打包的时候一些引入但是没用到的包在后面的打包编译时移除
    • 在外部引入的是对象的引用,而不是缓存,而common.js里的获得是值的拷贝,它拿到的是缓存值
    • 可以对common.js模块重新赋值,但是对ES6模块赋值会报错
    • 都可以对对象内部的值进行改变
  • 模块的重命名
    • 我们可以在导入和导出的时候对模块进行重命名

      //导入
      import {thismyfun as fun} from './url'
      //导出
      export {fun as thismyfun}
      复制代码

箭头函数

  • this的指向,箭头函数里的this指向定义时所在的对象

    var obj={name:"zhangsan",sayName:setTimeout(function(){console.log(this.name)  //this指向全局},500)
    }
    obj(sayName)/ /undefined我们用箭头函数来写
    var obj={name:"zhangsan",sayName:setTimeout(()=>{console.log(this.name)  //this指向obj},500)
    }
    obj(sayName)/ /zhangsan复制代码
    • 箭头函数不能作为构造函数,不能使用new

    • 箭头函数没有argument对象

      const fun=(a,b)=>{console.log(arguments[0])
      }
      fun(0,1)   //arguments is not defined
      复制代码
  • 函数默认值,ES5之前和ES6实现方法

    #ES6写法
    const handleClick=(obj={})=>{console.log(obj.name)
    }
    #ES5写法
    const handleClick=function(obj){obj=obj||{};console.log(obj.name)
    }
    复制代码

把日常开发踩过的坑在这里与大家分享一下,希望对大家有多帮助,有不妥的欢迎探讨,这是我的github。好啦,就先到这里吧(逃)。

转载于:https://juejin.im/post/5a5f3ce16fb9a01cb80fc482

记录下ES6踩过的坑相关推荐

  1. 【记录贴!】记录调试nerf-pytorch踩过的坑

    简单来说,nerf(神经辐射场)是一个结合了某种全连接深度网络,通过少量目标视角下的照片就能合成任意视角照片的技术.从代码入手算法进而掌握技术是一件高效的学习方式,本帖主要围绕nerf源码的安装deb ...

  2. 记录下PictureSelector图片库上的坑

    github地址:https://github.com/LuckSiege/PictureSelector 是个好库,但是貌似好多的坑 在2.1.9这前,在android8手机上崩溃 修改图片时,(将 ...

  3. 记录下重装xp系统的坑

    最近给旧电脑重装了xp系统,因为太旧了,不好进pe,只能启动原来的系统,直接执行安装,安装的是深度lite精简版的. 问题来了,装完发现系统占用啦5个G!实际文件占用了1个G多一点,不科学 原来是因为 ...

  4. ubuntu下vscode调试开发踩过的坑

    最近刚过安装了中文版的ubuntu18.04.1,安装完之后想在ubuntu上安装vscode做c/c++的开发调试,踩了不少坑,在此记录一下,希望大家在这条路上不要再踩同样的坑. 1.安装vscod ...

  5. 记录自己首次在eclipse中配置tomcat并运行jsp踩过的坑

    记录自己首次在eclipse中运行jsp踩过的坑 我使用的版本 1.jdk下载 java环境配置 2.Tomcat 服务器的安装与配置 3.下载eclipse并配置tomcat 3.1第一次下载ecl ...

  6. 记录安装Manjaro踩过的那些坑,解决安装后进入grub 的问题

    记录安装Manjaro踩过的那些坑,解决安装后进入grub 的问题 最完美的一次linux体验 先说自己安装linux的经验,大二的时候最先接触的是Centos和Ubuntu服务器版的,都是在虚拟机中 ...

  7. React-Native android在windows下的踩坑记

    坑很多,跳之前做好准备.没有VPN的同学请浏览完本文后慎行. 你需要先安装最新版本的node.js(我最后使用的是v4.1.2),前往官网下载>> 注:我win7已经安装过Visual S ...

  8. 记录一下 开发STM32 USB HID踩过的坑

    记录一下 开发STM32 USB HID踩过的坑 一.前言 二.代码配置 一.前言 MCU: STM32F103C8T6 CubeMX: STM32CubeMX 5.3.0 二.代码配置 引脚配置 时 ...

  9. MongoDB--Linux下搭建的副本集集群(踩过的坑,血和泪的教训)

    MongoDB–Linux下搭建的副本集集群(踩过的坑,血和泪的教训) 文章目录 MongoDB--Linux下搭建的副本集集群(踩过的坑,血和泪的教训) 一:环境准备 二:安装步骤 三:启动 1.关 ...

  10. 群晖 使用SMB3进行局域网传输双倍叠加网速下踩的一些坑

    我用的是黑群晖,版本DSM6.2.3,展示成功叠加(原本速度在110左右) 网上已经有很多群晖如何双倍叠加的类似的教程,我在这里就不详解了. 参考前人写的教程即可: 群晖 | 群晖开启 SMB3 wi ...

最新文章

  1. QIIME 2用户文档. 8数据导入Importing data(2018.11)
  2. Linux ssh命令无法使用
  3. 相似度--欧氏距离(归一化)
  4. 计算机文化基础操作考试,(计算机文化基础上机考试操作指南.doc
  5. 5分钟了解CDN 加速原理 | +新书推荐
  6. 扫码连wifi小程序源码
  7. C语言学生成绩管理系统(综合项目)
  8. Latex数学符号整理
  9. MP3stego下载(强大的隐写工具)
  10. mysql将毫秒转换为小时_将毫秒转换为天小时分钟
  11. 店开天下,阿里云助力客如云数据中台建设
  12. hadoop集群搭建及易踩坑收录
  13. 数组与链表的优缺点和区别
  14. hackertyper
  15. 网络监控神器!这7大免费开源工具可别错过
  16. 优秀的程序员!=爱写博客的程序员
  17. 业务系统中的开与闭——分发模式
  18. NLP判断语言情绪_最新中文NLP开源工具箱来了!支持6大任务,面向工业应用 | 资源...
  19. Unity 2D 游戏学习笔记(1)
  20. matlab散点图转换热力图heatmap

热门文章

  1. 我为什么不再推荐 RxJava
  2. Android View框架总结(二)View焦点
  3. angularjs java 实例_[Java教程]angularjs小练习(分别通过ng
  4. cad相对坐标快捷键_CAD里面绝对、相对、极坐标是什么?如何区别
  5. wps分析工具库如何加载_怎么在wps表格里面加入“数据分析”工具啊?
  6. 一元二次方程abc决定什么_情绪管理 - ABC理论
  7. python网盘开发_python实现网盘自动化操作(GUI版)
  8. MyBatis Generator.xml详解
  9. Redis进阶不得不了解的内存优化细节
  10. 设计思想之高内聚低耦合