一、参考链接

http://www.ecma-international.org/ecma-262/6.0/index.html
http://www.ecma-international.org/ecma-262/7.0/index.html
http://www.ecma-international.org/ecma-262/8.0/index.html
http://es6.ruanyifeng.com/
https://developer.mozilla.org/zh-CN/

二、安装依赖

cnpm i -D babel-preset-env babel-loader babel-core babel-polyfill babel-plugin-transform-runtime

查看浏览器对es6的支持情况

cnpm i -g es-checker
es-checker

三、文件配置

//webpack.config.js
module.exports = {
entry: './index.js',
output: {
path: __dirname,
filename: 'bundle.js'
},
devtool: "inline-source-map",
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader'
}
}
]
}
}

 四、 声明变量
1、关键字
var
function
let
const
import
class
2、var,let,const
var声明的变量存在变量提升,会初始化为undefined;
let声明的变量不存在变量提升,会保持为未初始化的状态。let声明块级作用域,不存在变量提升,暂时性死区(封闭性作用域),不允许重复声明。尽量避免在块级作用域内声明函数,如果确实需要,也应该写函数表达式,而不是写函数声明。
const声明的变量不是值不能修改,而是变量指向的内存地址不能修改。声明块级作用域,不存在变量提升,暂时性死区(封闭性作用域),不允许重复声明。
3、全局变量和顶层对象

顶层对象,在浏览器环境指的是window对象,在Node指的是global对象。es5中,全局变量是顶层对象的属性,es6中不是。

//获取顶层对象
var getGlobal = function () {
if (typeof self !== 'undefined') { return self; }
if (typeof window !== 'undefined') { return window; }
if (typeof global !== 'undefined') { return global; }
throw new Error('unable to locate global object');
};

五、变量的解构赋值
变量的解构赋值,等号右边可能是数组,对象,字符串,数值,布尔值。解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错。
1、数组

let [a, b, c] = [4, 5, 6];

只要某种数据结构具有Iterator接口,都可以采用数组形式的解构赋值。

let [k = 1] = [undefined];
let [x, y, z] = [1,,5];

2、对象

let { m, n } = { m: "aaa", n: "bbb" };
let { l = "ccc", m = l } = { m: "aaa", n: "bbb" }; //默认值设置成功,m为"aaa"
let { m: l } = { m: "aaa", n: "bbb" }; // 模式匹配成功,l为"aaa"

3、字符串

let [a, b, c] = "hello";
let { length: len } = "hello"; // len为5

4、数值和布尔

let { toString: s } = 12; //s === Number.prototype.toString
let { toString: s } = true; //s === Boolean.prototype.toString

5、函数

//函数参数的默认值是空对象,函数设置了对象解构赋值的默认值。
function fn1({x = 0, y = 0} = {}) {
return [x, y];
}
console.log(fn1({})); //[0, 0] //函数参数的默认值是有具体属性的对象,函数没有设置对象解构赋值的默认值。
function fn2({x, y} = { x: 0, y: 0 }) {
return [x, y];
}
console.log(fn2({})); //[undefined, undefined]
console.log(fn2({x:2,y:5}));

六、字符串的扩展
1、一些函数

'hello'.includes('l'); //true
'hello'.startsWith('h'); //true
'hello'.endsWith('o'); //true
'hello'.repeat(3); //"hellohellohello"
'hello'.padStart(8,'hi,'); //"hi,hello"
'hello'.padEnd(11,',world'); //"hello,world"

2、模板字符串

let name = "camille";
console.log(
`hello,my name is ${name}`
); let h = document.querySelector('body');
h.innerHTML = `<h1 style="color:red">您好</h1>`;

3、标签模板
标签模板是函数调用的另一种形式,即模板字符串跟在函数名后面。这里的标签指的是函数,模板字符串就是函数的参数。

//过滤HTML字符串,防止用户输入恶意内容。
function SaferHTML(templateData) {
let s = templateData[0];
for (let i = 1; i < arguments.length; i++) {
let arg = String(arguments[i]); s += arg.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;"); s += templateData[i];
}
return s;
} let sender = '<script>alert("abc")</script>'; // 恶意代码
let message = SaferHTML`<p>${sender} has sent you a message.</p>`; console.log(message);

七、函数的rest参数和数组的扩展操作符
咋一看,都是3个点,函数的rest参数可以把参数序列转换为数组。数组的扩展操作符,...可以把数组转换为参数序列,[...]把具有iterator接口的对象转换为数组,[...]把字符串转换为数组。

八、在html中写es6

<script type="text/babel">
// 你的ES6代码
</script>

es6那些事儿的更多相关文章

  1. ES5和ES6那些你必须知道的事儿(三)

    ES5和ES6那些你必须知道的事儿 ES6新增的东西 一.块级作用域:关键字let,常量const let与var的区别: a.不会进行变量声明提升 b.变量不允许被重复定义 c.变量不允许被删除 d ...

  2. ES5和ES6那些你必须知道的事儿(二)

    ES5和ES6那些你必须知道的事儿 ES5新增的东西 二.对象方法 1.Object.getPrototypeOf(object) 返回对象的原型 function Pasta(grain, widt ...

  3. ES5和ES6那些你必须知道的事儿(一)

    ES5和ES6那些你必须知道的事儿 ES5新增的东西 一.数组方法 1.forEach     用途:遍历,循环 对于空数组不会执行回调函数 //用法 array.forEach( function( ...

  4. 关于ES6的let、const那些事儿

    Babel 转码器 Babel是广泛使用的一个ES6转换器,将ES6代码转换成ES5代码,从而实现在老版本的浏览器执行. let和const命令 let所声明的变量只在let命令所在的代码块内是有效的 ...

  5. Vue ES6 Jade Scss Webpack Gulp

    一直以来非常庆幸曾经有翻过<代码大全2>:这使我崎岖编程之路少了很多不必要的坎坷.它在软件工艺的话题中有写到一篇:"首先是为人写程序,其次才是机器(Write Programs ...

  6. webpack 教程 那些事儿04-webpack项目实战分析

    这节主要讲解真正项目用用到的 webpack配置问题,项目实战篇 就像我们不会完全做一个项目,不用别人的轮子一样.这个配置我们借用 vue-cli 搭建的配置来研究,因为它已经足够优秀. 有了前面的基 ...

  7. 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!【转载+整理】

    原文地址 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和for-of循环 生成器 Generators 模板字符串 不定参数和默认参数 解构 Destructu ...

  8. 深入浅出ES6(十六):模块 Modules

    作者 Jason Orendorff  github主页  https://github.com/jorendorff 早在2007年我刚加入Mozilla的JavaScript团队的时候广为流传一个 ...

  9. 深入浅出ES6(十一):生成器 Generators,续篇

    作者 Jason Orendorff  github主页  https://github.com/jorendorff 欢迎回到深入浅出ES6专栏,望你在ES6探索之旅中收获知识与快乐!程序员们在工作 ...

随机推荐

  1. popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

    一.首先说一下自执行函数 1. 立即执行函数是什么?也就是匿名函数 立即执行函数就是 声明一个匿名函数 马上调用这个匿名函数 2.popup的举例 点击,弹出一个新的窗口.保存完事,页面不刷新数据就返 ...

  2. 给div拼接html 拼接字符串

    简单描述:拼接html 拼接字符串,说实话,拼接这种东西我自己弄,得花费很多时间,主要是转义字符,单引号,双引号这种小细节调整起来比较麻烦,一旦疏忽多了少了一个符号,页面就有点抽象了,我呢比较粗枝大叶 ...

  3. 51nod1158 最大子矩形 单调栈应用

    #include<iostream> #include<cstring> #include<cstdio> using namespace std; ][6],m, ...

  4. 线上CPU飚高(死循环,死锁……)?帮你迅速定位代码位置

    top基本使用: top命令参考本篇文章 查看内存和CPU的top命令,别看输出一大堆,理解了其实很简单 top 命令运行图: 第一行:基本信息 第二行:任务信息 第三行:CPU使用情况 第四行:物理 ...

  5. 使用vue-cli 引入bootstrap.min.css文件报错

    可以在index.html 里面引入boostrap.min.css文件 将bootstrap.min.css文件放置于static/css/文件夹中 然后再index.html文件中引入便可 < ...

  6. 【第一部分】01Leetcode刷题

    一.二叉树的中序遍历 题目:94. 二叉树的中序遍历.94. Binary Tree Inorder Traversal 解法一: class Solution { public: vector< ...

  7. Facebook的React Native之所以能打败谷歌的原因有7个(ReactNative vs Flutter)

    https://baijiahao.baidu.com/s?id=1611028483072699113&wfr=spider&for=pc 如果你喜欢用(或希望能够用)模板搭建应用, ...

  8. 【ASP.NET】UCenter实现多站点同步登录退出

    利用UCenter实现discuz论坛和应用网站同步登录和退出功能 测试环境:Discuz! X3.2.UCenter 1.6..Net Framework 4.0 进入Discuz 后台的UCent ...

  9. MUI组件四:选择器、滚动条、单选框、区域滚动和轮播组件

    目录(?)[+]   1.picker(选择器) mui框架扩展了pipcker组件,可用于弹出选择器,在各平台上都有统一表现.poppicker和dtpicker是对picker的具体实现.*pop ...

  10. glusterfs分布式复制扩容卷以及平衡卷

    随着数据量的增长,需要扩容满足使用.今天测试下glusterfs磁盘扩容的具体步骤 1.扩容 之前用的2台计算机的分布式复制卷.需要同时之两个服务器增加一块磁盘并格式化,挂载并扩容 热添加磁盘 ech ...