ES6一些新特性记录

ES6一些新特性记录

1.箭头操作符

箭头操作符左边是需要输入的参数,右边是返回值

比如运用到js回调函数中可以使书写更加方便

var array=[1,3,5];
//标准写法
array.foreach(function(v,i,a){
  console.log(v);
});
//es6写法
array.foreach(v => console.log(v));

又比如一块简单的代码:

function (i){ return i + 1}     //es5写法
(i) => i + 1;

如果方程式比较复杂,则需要用{}把代码包起来。

//es5写法:
function (x, y){
  x++;
  y--;
  return x + y ;
}
//es6写法:
(x, y) => {x++; y--; return x + y}

2.增强对象字面量

es6新特性中对象字面量被增强了,使用更为简洁灵活

a.可以直接在对象字面量里定义原型

b.定义方法可以不用function关键字

c.直接调用父类方法

var human = {
  breath(){
    console.log(‘breathing‘)
  }
};
var worker = {
  //直接使用对象字面两定义原型为human,相当于继承human
  __proto__:human,
  company:Earth;
  //定义方法不再需要function
  work(){
    console.log("working")
  };

};
human.breath();   //breathing
//调用继承来的human的breath方法
worker.breath();  //breathing

3.字符串模版

es6新特性中,可以使用反引号``来创建字符串,这种方法可以包含用$和花括号{}包裹的变量

//生成一个随机数
var num = Math.random();
//将这个数输出到控制台
console.log(`your num is ${num}`);

4.解构

自动解析数组或对象中的值,比如我们平时若要一个函数返回多个值,常规的做法是返回一个对象,将每个值作为对象中的属性返回。但中es6中,可以利用解构这一特性,直接返回一个数组,然后数组中的值回自动被解析到接收该值的变量中。

5.let

var name = ‘zach‘
?
while (true) {
    var name = ‘obama‘
    console.log(name)  //obama
    break
}
?
console.log(name)  //obama

es5中只有全局作用域和函数作用域,这样带来了很多不合理的场景,比如上面demo中,内层变量覆盖外层变量,而let实际上为JS新增了块级作用域,用它所声明的变量,只在let命令所在的代码块内有效。

let name = "shark";
while(true){
  let name = "Jan";
  console.log(name);    //Jan
  break;
}
console.log(name);      //shark

var另一个不合理场景就是:用来计数的循环变量,泄露为全局变量,比如

var a = [];
for( var i = 0; i <= 10; i++){
  a[i] = function(){
    console.log(i);
  }
};
a[6]();     //10

上面变量中,变量i是var声明的,在全局范围内有效,所以每一次循环,新的值都会覆盖旧的值,这就导致,最后循环结束时输出的是10.而使用let则不会出现这个问题。

var a = [];
for( let i = 0; i <= 10; i++){
  a[i] = function(){
    console.log(i);
  }
};
a[6]();  //5

因为let只在自己所在的块级作用域有效,所以i不会泄露成全局变量,最后输出的仍然是数组a中下标为6的值。

6.const

const也可以用来声明变量,只不过它声明的是变量,一旦声明就不能够改变

const PI = Math.PI
PI = 24;    //ERROR

当我们想去改变const声明的常量时,浏览器就会报错。

const有一个很好的应用场景,当我们使用第三方库声明的变量时,可以避免不小心重命名而导致出现的bug.

7.默认参数值

es6可以直接在定义函数时指定参数的默认值,而不需要逻辑运算符了

// 常规做法
function sayHello(){
  var name = name || "Jan";
  console.log(‘hello ‘+name);
}
// es6写法
function sayHello(name = "Jan"){
  console.log(‘hello ${name}‘);
}
?
// 常规 result:
sayHello():hello Jan ;
sayHello(‘Jack‘):hello Jack ;
?
// es6 result
sayHello(): hello Jan ;
sayHello(‘Tony‘): hello Tony ;

8.template语法

当我们要引入大段html到文档中时,传统的写法是:

$("#result").append(
  "There are <b>" + basket.count + "</b> " +
  "items in your basket, " +
  "<em>" + basket.onSale +
  "</em> are on sale!"
);

我们需要引一大堆的+号用来连接文本与变量。而使用es6中模版字符串后,我们可以这样写

$(‘result‘).append(‘
There are <b>${basket.count}</b>
items in your basket<em>${basket.onSale}</em>
are on sale!
‘)

9.for of 值遍历

es5中我们都知道用for in 遍历数组,对象,es6中提供的for of与其功能相似,只不过它遍历的不是序号而是值。

var arr = [a, c, e, g];
for (v of arr){
  console.log(v);     //a , c , e ,g
}
时间: 2024-12-09 17:51:59

ES6一些新特性记录的相关文章

ES6的新特性-让前后端差异越来越小

ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony(和谐之意,显然没有跟上我国的步伐,我们已经进入中国梦版本了).上一次标准的制订还是2009年出台的ES5.目前ES6的标准化工作正在进行中,预计会在14年12月份放出正式敲定的版本.但大部分标准已经就绪,且各浏览器对ES6的支持也正在实现中. 潮流虽然太快,但我们不停下学习的步伐,就不会被潮流丢下的,下面来领略下ES6中新特性,一堵新生代JS的风采. 1.箭头操作符 如果你会C#或者Java,

ES6:JavaScript 新特性

5月14日,国务院发布了<国务院关于同意建立深化收入分配制度改革部际联席会议制度的批复>,同意建立由发改委牵头的深化收入分配制度改革部际联席会议制度.这是对政府一年多前首次发布的关于收入分配制度改革若干意见的落实,标志着中国收入分配改革迈出了实质性一步.根据批复,联席会议由国家发改委.财政部.人力资源和社会保障部等21个部门和单位组成.发改委主任徐绍史担任联席会议召集人,其他成员单位有关负责人为联席会议成员. 国务院下发的文件显示,部际联席会议制度的主要职责包括:在国务院领导下,统筹协调做好深

ES6 &amp;&amp; ECMAScript2015 新特性

ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. 虽然目前并不是所有浏览器都能兼容ES6全部特性,但越来越多的程序员在实际项目当中已经开始使用ES6了.所以就算你现在不打算使用ES6,但为了看懂别人的你也该懂点ES6的语法了- 在我们正式讲解ES6语法之前,我们得先了解下Babel.Babel Babel是一个广泛使用的ES6转码器,可以将ES6

ES6相关新特性介绍

你可能已经听说过 ECMAScript 6 (简称 ES6)了.ES6 是 Javascript 的下一个版本,它有很多很棒的新特性.这些特性复杂程度各不相同,但对于简单的脚本和复杂的应用都很有用.在本文中,我们将讨论一些精心挑选的 ES6 特性,这些特性可以用于你日常的 Javascript 编码中. 请注意,当前浏览器已经全面展开对这些 ES6 新特性的支持,尽管目前的支持程度还有所差异.如果你需要支持一些缺少很多 ES6 特性的旧版浏览器,我将介绍一些当前可以帮助你开始使用 ES6 的解决

ES6的新特性 — 新增关键字let、const

ECMAScript 是什么? 首先,我们都知道JavaScript由三部分组成:ECMAScript,DOM,BOM: 其中的ECMAScript是Javascript的语法规范. ECMAScript定义了很多东西,如: 语法-----解析规则,关键字,语句,声明,操作等 类型-----布尔型,数字,字符串,对象等 原型和继承 内置对象,函数的标准库----------JSON, Math, 数组方法,对象方法等 浏览器兼容: 目前Google和Firefox浏览器对ES6新特性的兼容最友好

ES6实用新特性

兼容性 http://kangax.github.io/compat-table/es5/ http://kangax.github.io/compat-table/es6/ ES6(ES2015)兼容环境: IE10以上,Chrome.FireFox.移动端.NodeJS 在低版本环境中使用的解决方案: 1 在线转换 brower.js 2 提前编译 ES6新特性 变量 函数 数组 字符串 面向对象 Promise generator/yield(对Promise的封装) 模块化 一.变量 v

H5、C3、ES6的新特性

H5的新特性 1.语义化标签 有利于SEO,有助于爬虫抓取更多的有效信息,爬虫是依赖于标签来确定上下文和各个关键字的权重. 语义化的HTML在没有CSS的情况下也能呈现较好的内容结构与代码结构 方便其他设备的解析 便于团队开发和维护 2.表单新特性 3.多媒体视频(video)和音频(audio) 4.web存储 sessionstorage:关闭浏览器清空数据,储存大小约5M. localstorage:永久生效,存储大小20M,多窗口下都可以使用 都只能储存字符串 C3的新特性 1.选择器:

C#新特性记录

C#6.0新特性笔记 Getter专属赋值 可以在构造函数中,给只有get的属性赋初始值. class Point { public int x { get; } public Point() { x = 1; } } 自动属性初始化 可以给自动属性,赋初始化值 class Point { public int x { get; set; } = 1; } 全局静态 可以设置全局静态,然后直接写静态类的方法. using static System.Console; namespace FxAp

ES6的新特性(12)——Set 和 Map 数据结构

Set 和 Map 数据结构 Set 基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); for (let i of s) { console.log(i); } // 2 3 5 4 上面代码通过add方法向 Set 结构加入成员,结果表明 Set 结构不会