前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ECMAScript 6介绍

ECMAScript 6介绍

作者头像
一个淡定的打工菜鸟
发布2018-09-06 17:36:51
3660
发布2018-09-06 17:36:51
举报
文章被收录于专栏:淡定的博客淡定的博客

ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。标准的制定者有计划,以后每年发布一次标准,使用年份作为版本。因为ES6的第一个版本是在2015年发布的,所以又称ECMAScript 2015(简称ES2015)。 2016年6月,小幅修订的《ECMAScript2016标准》(简称ES2016)如期发布。由于变动非常小(只新增了数组实例的includes方法和指数运算符),因此 ES2016 与 ES2015 基本上是同一个标准,都被看作是ES6。根据计划,2017年6月将发布ES2017。—以上内容来自W3Cschool

使用let声明变量

在es6中我们使用let声明变量,但是为什么要使用let声明变量?下面来比较一下用var声明变量跟使用let声明变量的区别

使用var 声明变量
代码语言:javascript
复制
// 使用var 声明变量  
var bVariable = "变量";

// 存在的问题:
// 1.var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined
 console.log(name); // 此时输出undefined
 var name = "张三";


// 2.var命令允许我们重复声明变量,并且不会报错
var name = "jerry";
var name = "tom";
console.log(name);// 此时输出tom

// 3.通过 var 定义的变量,它的作用域是全局作用域或者函数作用域
function varvslet() {
  console.log(i); // 此时输出undefined
  for (var i = 0; i < 3; i++) {
    console.log(i); // 0, 1, 2
  };
}
使用let 声明变量
代码语言:javascript
复制
//1.声明的变量仅在块级作用域有效
 {
   let name = "zhangsan";
 }
 
 console.log(name); // 此时name不会被访问到,因为let会构成块级作用域

 {
   var name1 = "lisi";
 }
 
 console.log(name); // 此时name会被访问到,因为var会构成全局作用域
//2.不存在变量提升,不存在预解析
 console.log(family);
 var family = "张三";
// 上面的代码实际上会发生预解析,解析成下面的代码,会先定义family
 var family;
 console.log(family);// 此时输出undefined
 family ="张三";
//但是使用let,则不会出现这种情况
console.log(name);  //不会输出undefined,直接出现暂时性死区
let name="张三";
//3.暂时性死区
//指程序报错终止执行
//4.不允许重复声明
let name="张三";
let name="李四"; //此时不允许重复定义: Identifier 'name' has already been declared
image
image

使用const声明常量

js中并没有声明常量的关键字,在es6中,出现了可以声明常量的关键字,const

代码语言:javascript
复制
const name="张三";
  1. 声明时必须赋值,否则报错
  2. 只在块级作用域有效
  3. 存在暂时性死区
  4. 不可重复声明
  5. 当常量是对象时,对象本身是可变的,依然可以添加新属性
  6. 了解基本数据类型以及复杂数据类型
image
image

ES6中的字符串

ES6之前:

代码语言:javascript
复制
// 1.需要使用拼接字符串

 var html = '<header>' +
   '<a class="back" href="javascript:;">' +
   '<i></i>' +
   '<span>优惠活动</span>' +
   '</a>' +
   '</header>';


// 2.如果上面的"优惠活动"是变量
 var title = "优惠活动";

 var html = '<header>' +
   '<a class="back" href="javascript:;">' +
   '<i></i>' +
   '<span>' + title + '</span>' +
   '</a>' +
   '</header>';


// 3.如果有一个字符串"Hello World",如何遍历

 var str = "Hello World";

 for (var i = 0; i < str.length; i++) {
   console.log(str[i]);
 }

ES6之中:

代码语言:javascript
复制
// 1.不需要使用拼接字符串,直接使用模板字符串
 let html = `
 <header>
   <a class="back" href="javascript:;">
     <i></i>
     <span>优惠活动</span>
   </a>
 </header>`;


// 2.如果上面的'优惠活动'是变量,也不需要使用拼接字符串的方式 只需要把变量写在这样的格式中 ${变量}
 var title = "优惠活动";

 let html = `
 <header>
   <a class="back" href="javascript:;">
     <i></i>
     <span>${title}</span>
   </a>
 </header>`;

// 3. 使用for...of
 var str = "HelloWorld";

 for(let i of str) {
   console.log(i);
 }

ES6中的函数

rest参数

ES6之前:

代码语言:javascript
复制
// 1.函数接受任意个数的参数并排序
 var sortNumber = function () {
   return Array.prototype.slice.call(arguments).sort(); 
   //此时arguments是类数组,可以遍历  可以有length属但是不能有数组的方法
   //Array.prototype.slice.call()就是把类数组转换成数组
 }
 console.log(sortNumber(2,3,1,4,5,9,0));

ES6之中:

代码语言:javascript
复制
// 1.函数接受任意个数的参数并排序
function add(...rest) {
  console.log(rest);//此时rest是数组
  red.sort();
  console.log(rest);
}
add(1,4,3,5,2,7,9,0,6);

<!--注意:arguments是类数组,rest是数组,-->
<!--rest参数之后不能再有其他参数(即只能是最后一个参数),-->
<!--否则会报错。-->

箭头函数

ES6之前:

代码语言:javascript
复制
//匿名函数写法
 var add = function (x,y) {
   return x + y;
 }

ES6之中:

代码语言:javascript
复制
//匿名函数写法
 var add = (x,y) => {return x+y};
 //注意: 箭头函数不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。

解构赋值

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

代码语言:javascript
复制
//数组解构赋值
 var [a,b,c] = [1,2];
 console.log(a,b,c);
 var [a,b] = [1,2,4];
 
//对象解构赋值
 var obj = {a: 1,b: 2}
 var {a,b} ={a:1, b:2} 
 console.log(a,b);
image
image
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/06/28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用let声明变量
    • 在es6中我们使用let声明变量,但是为什么要使用let声明变量?下面来比较一下用var声明变量跟使用let声明变量的区别
      • 使用var 声明变量
      • 使用let 声明变量
  • 使用const声明常量
  • ES6中的字符串
  • ES6中的函数
    • rest参数
      • 箭头函数
      • 解构赋值
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档