ECMAScript6入门

ECMAScript6入门

首先了解一下ECMAScript6的来源:

js的组成部分有哪些?

ECMA DOM BOM

 

什么是ECMA?

ECMA是一种标准,js则是实现者

 

什么是ECMAScript?

简写ECMA或者ES

 

目前版本:

低级浏览器:支持ES3.1

高级浏览器:ES5过渡到ES6

 

ECMA的历史:

1996年 ES1.0  js稳定   Netscape将js提交给ECMA组织,ES正式出现

1998年 ES2.0 正式发布 

1999年 ES3.0 被浏览器广泛支持

2007年 ES4.0 过于激进,被废除了

2008年 ES3.1 4.0退化成3.1, 代号 Harmony(和谐)

2009年 ES5.0 ES5正式发布,同时公布JavaScript.next 也就是后来的6.0

2011年 ES5.1 成为了ISO国际标准

2013年.3月 ES6.0 颁布草案

2013年12月 ES6.0 发布草案

2015年 ES6.0 预计发布正式版,同时JavaScript.next指向ES7.0

2018年 ES6.0 ES6比ES5的生成力更强,代码更整洁

 

兼容性:

目前为止 ES5 ES6支持情况基本凑合

node.js 用的是chrome内核,在node中可以使用ES5 ES6很多特性

ES5和ES6已经逐渐沦为后台语言

 

在浏览器如何使用?

需要用到编译工具:

babel —— 让我们在当前的项目中随意的使用这些新最新的es6,甚至es7的语法

traceur  —— 由Google出的编译器,把ES6语法编译为ES5

gulp

webpack

npm

bootstrap 引导程序,跟css认识的bootstrap不一样

 

在网页上使用:

方法一:直接在<script></script>中使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        let a = 12;
        alert(a);
    </script>
</head>
<body>

</body>
</html>

注意:如果浏览器无法编译,则需要在https://github.com/aikar/traceur/tree/master/traceur/src下载traceur.js 和 bootstrap.js两个文件,然后引入到HTML文件中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--插入一下代码引用两个js-->
    <script src="traceur.js"></script>
    <script src="bootstrap.js"></script>
    <script type="module">
        let a = 12;
        alert(a);
    </script>
</head>
<body>

</body>
</html>

 

方法二:在线直接使用——主要用于测试

https://google.github.io/traceur-compiler/demo/repl.html

https://babeljs.io/repl/

 

方法三:直接在node里面使用

a)但直接用时,需要添加‘use strict’

b)node --harmony_descructuring  xxx.js

实例:在webstrom创建一个test.js文件

'use strict';
let a = 12;
console.log(a);

ALT+f12快捷键打开webstrom的终端Terminal 输入node test.js 则可执行

 

新增功能

1、let——定义变量

let a = 12;

特点:

1)let具有块级作用域:只能在{}包起来的代码块中使用,是有局部作用域的,而用var定义的变量无论在什么地方都是全局变量的。

2)let不允许重复声明变量,而var声明的两个相同名的变量是不会报错的,后者会覆盖前者

总结:其实let才是接近其他语言的变量

用处:1)封闭空间变得更简洁

实例1:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //ES5的写法
        (function(){
            var a = 12;
            alert(a);
        })();

        //ES6的写法
        {
            let a = 12;
            alert(a);
        }
    </script>
</head>
<body>

</body>
</html>

实例2:

<!DOCTYPE html>
<html lang="en">
<head>

    <script>
        window.onload=function(){
            var aBtn = document.getElementsByTagName("input");
            //ES5封闭函数
            // for(var i=0; i<aBtn.length; i++){
            //     (function(i){
            //         aBtn[i].onclick = function(){
            //             alert(i);
            //         }
            //     })(i);
            //     }
            // };
            //ES6封闭函数
            for(let i=0; i<aBtn.length; i++){
                    aBtn[i].onclick = function(){
                        alert(i);
                    }
            }
            };
    </script>
</head>
<body>
<input type="button" value="aaa">
<input type="button" value="bbb">
<input type="button" value="ccc">
</body>
</html>

总结:块级作用域,其实就是匿名函数立即调用

 

 const——定义常量,一旦赋值,就不能被修改

const a = "shareclub";
a = 12; //报错

注意:const必须给初始值,因为以后再也没法赋值了,所以声明的时候一定要有值,还不能重复声明。

用途:为了防止意外修改变量,比如引入库名,组件名。

 

${}字符串链接

//ES5
'abc'+变量名+'ef'
//ES6
`abc${变量名}ef`  //反双引号,1键前面的按键

 

解构赋值

var [a,b,c] = [12,5,101]; //a=12 b=5 c=101

var {a,b,c} = {b:5,a:12,c:101} //结合json使用,无论赋值顺序如何,a都等于12

模式匹配:

var [a,[b,c],d] = [12,[1,2],4];  //左边与右边模式一样

var [{a,e},[b,c],d] = [{e:'eeee',a:'aaa'},[1,2],4];  //与json结合

用途——交互:数据解析

var arr = [{title:'abc', href:'kkk', img:'img1'}];

var [{title,href,img}]=arr;

console.log(title,href,img);  //输出结果abc kkk img1

解构赋值给默认值

var {time=12, id=0}={}; //time默认为12, id默认为0

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值