ES6核心详解(一)

ES6核心详解

本章你将学习到如下知识点

ES6模块

ES6关键字

ES6模块

相信学习过前端的同学们都听说过前端的模块懒加载和前置加载,其最早来源于前端模块加载器RequireJS和SeaJS中的AMD和CMD的概念。

其中AMD规定和CMD对模块的规定如下图


为什么要扯这么远呢? 因为我们接下来学习的ES6模块是加载前置的,让然不一定要提前声明,而是你声明之后,最终会变编译到代码的最上方。


好了,我们接下来看看应该怎么使用吧

默认

导入: import num from './文件';

导出:export default num变量或常量;

声明的导入导出

导入:import { name,age } from './文件';

导出:export var age = 18; export {name};

全部导入

import * as 变量名 from './文件'

下面我们看看代码和预测执行效果


最终运行一下程序(未来我们在项目中可以看到这一节的测试效果)

模块最后:我们注意一下,import和export关键字只能写在顶级作用域中,而不能写在if{} 之类这样的代码块中,至于原因嘛... 嘿嘿,就是前面讲的加载前置!!!!

关键字

let和const都是块级作用域,它们的出现最显著的解决了我们变量类型提升的问题,我们来看看他能解决什么问题?


点击1,当我们点击后:


天哪!那么这个原因,主要有2点:

i变量在全局只有一个,不论哪里都能访问,for循环执行后,其值确实为5

onclick代码赋值的是一个函数,而该函数在循环内并为执行,只有当被点击的时候才执行,最终去拿全局的i

那么我们想要解决这个问题,核心点就在于一个li的点击都对应不同的变量就好了,于是let关键字让我们在同样的for循环中,有了5个变量的存在


总结一下: let关键字用于变量声明,相对var来说,不会提升成全局变量

if(true) {

leta=1;// 这个a在外部无法使用

   }

const 也是块级作用域,用于值不会改变的量(常量)的声明

// 变量

letnum=1;

// 常量

constPI=3.1415926;

箭头函数

相对function/ES6函数简写,  箭头函数的this会向上级函数绑定

同时arguments也向上绑定

varobj={

init:function() {

varxx=()=>{

            // this是init的this,也就是obj对象

           }

       }

   }

写法非常爽: (左边)一个参数小括号可省,(右边)一行代码大括号可省

箭头函数本身没有this,会向上级function绑定this,其不可以做为构造函数的使用

箭头函数写法:

没有参数:()=>{}

一行代码做返回值: () => 'abc'

多个参数: (n,m) => n + m

一个参数: n => n

相对复杂一点点的写法:


ES6函数简写

用在对象的属性中

fn3() {//干掉了:function,用在对象的属性中

                console.log(this);

},

讲到这里ES6函数简写和箭头函数的差别就在于是否向上绑定this了

解构赋值

解构赋值方便了生活啊。。请看

letobj={a:1,b:2,c:3};

// 我们需要只获取其中a和b属性

leta=obj.a;letb=obj.b;

// 也可以这样

let{a,b}=obj;// 只获取其中部分key值

let[a,,,d]=[1,2,3,4];// a:1    d:4

// 还可以用别名

let{name:myName}={name:'jack'};

console.log(myName);// 'jack'

三点运算符

说到...很无语? 不是! 在前端中也有这样的操作符,名称也挺多,我们拨开云雾,直接分类!

你听过展开运算符,一个字形容它:开

varobj={a:1,b:2};

varnewObj={...obj,c:3};// { a:1,b:2,a:3 };

vararr=[1,2,3];

[4,5,...arr];/// [4,5,1,2,3];

需要注意的是展开运算符属于浅拷贝,即:当展开时某属性是对象,会将对象引用赋值给新对象,而不是重新创建一个对象,差别在于修改该对象的属性则多处影响

好!接着再来一个"收"! 该运算符叫做可变参数,主要是为了解决函数调用时,参数数量未知的问题

functionadd(n1,n2,n3,n4) {// 如果还有n5、n6呢?

}

functioncalc(operator,...nums) {

// operator 可以是+-*/

letresult='';

for(leti=0;i<nums.length;i++) {

if(i===nums.length-1)

  result+=nums[i];

else

    result+=nums[i]+operator;

   }

returneval(result);

}

calc('+',1,2,3,4,5,66,7,8);// 96

以上需求是计算器的简单实现,重点在于我们看到...nums它变成了一个数组,于此同时...nums在还有其他参数朋友的时候,只能放在最后的地方。

写再最后**

为了帮助大家让学习变得轻松、高效,给大家免费分享一大批资料,帮助大家在成为全栈工程师,乃至架构师的路上披荆斩棘。在这里给大家推荐一个前端全栈学习交流圈:??947552909.欢迎大家进群交流讨论,学习交流,共同进步。

有些人对学习充满激情,但是缺少方向,而在浩瀚的知识海洋中看似无边无际,此时最重要的是要知道哪些技术需要重点掌握,避免做无用功,将有限的精力及状态发挥到最大化。

最后祝福所有遇到瓶颈且不知道怎么办的前端程序员们,祝大家在往后的工作与面试中一切顺利。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容

  • 1、新的声明方式 以前我们在声明时只有一种方法,就是使用var来进行声明,ES6对声明的进行了扩展,现在可以有三种...
    令武阅读 1,007评论 0 7
  • 本文为阮一峰大神的《ECMAScript 6 入门》的个人版提纯! babel babel负责将JS高级语法转义,...
    Devildi已被占用阅读 1,983评论 0 4
  • 什么是ES6? ECMAScript 6.0 是继ECMAScript 5.1 之后 JavaScript 语...
    多多酱_DuoDuo_阅读 1,096评论 0 4
  • 看这本书是在markdown在做的笔记,更友好的阅读方式访问: github es6.md(https://git...
    汪汪仙贝阅读 456评论 0 0
  • 你可能已经听说过ECMAScript 6(简称 ES6)了。ES6 是 Javascript 的下一个版本,它有很...
    米塔塔阅读 935评论 0 10