1.新的变量声明 :let :块级作用域,解决全局污染问题

const :常量 ,如π:3.1415927

class :类 。var:弱类型  funciton :方法 , import : 导入参数 export 导出参数(方法如下)

//lib.js
//导出常量
export const sqrt = Math.sqrt;
//导出函数
export function square(x) {
return x * x;
}
//导出函数
export function diag(x, y) {
return sqrt(square(x) + square(y));
} //main.js
import { square, diag } from './lib';
console.log(square(11)); //
console.log(diag(4, 3)); //

2.ES 6 的解构赋值  :let [a,b,c]=[1,2,3]  等价于 let a=1 ; let b=2 ;let c=3

3.字符串的扩展

  • includes():返回布尔值,表示是否找到了参数字符串。
  • startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。
  • endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。
var s = 'Hello world!';

s.startsWith('Hello') // true
s.endsWith('!') // true
s.includes('o') // true

模板字符串的替换 引入了 ${ 变量名 } 来占位字符串中的变量;如:

//before ES5
$('#result').append(
'There are <b>' + basket.count + '</b> ' +
'items in your basket, ' +
'<em>' + basket.onSale +
'</em> are on sale!'
);
//now ES6
$('#result').append(`
There are <b>${basket.count}</b> items
in your basket, <em>${basket.onSale}</em>
are on sale!
`);

标签模板:

模板字符串的功能,不仅仅是上面这些。它可以紧跟在一个函数名后面,该函数将被调用来处理这个模板字符串。这被称为“标签模板”功能(tagged template)。

alert`123`
// 等同于
alert(123) var a = 5;
var b = 10; tag`Hello ${ a + b } world ${ a * b }`;
// 等同于
tag(['Hello ', ' world ', ''], 15, 50);

string.raw()

String.raw方法,往往用来充当模板字符串的处理函数,返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,对应于替换变量后的模板字符串。

如果原字符串的斜杠已经转义,那么String.raw不会做任何处理。

String.raw`Hi\n${2+3}!`;
// "Hi\\n5!" String.raw`Hi\u000A!`;
// 'Hi\\u000A!'

函数的扩展:

  • 允许赋默认值
  • 与解构赋值默认值结合
    function foo({x, y = 5}) {
    console.log(x, y);
    } foo({}) // undefined, 5
    foo({x: 1}) // 1, 5
    foo({x: 1, y: 2}) // 1, 2
    foo() // TypeError: Cannot read property 'x' of undefined
  • rest 参数 
    function add(...values) {
    let sum = 0;
    for (var val of values) {
    sum += val;
    }
    return sum;
    }
    add(2, 5, 3) //
  • 箭头函数 (个人最喜欢这一点)相当于后端的lambda表达式其实是一种语法糖
    var f = v => v;
    等价于
    var f= function(v){
    return v;
    } var f = () => 5;
    // 等同于
    var f = function () { return 5 }; var sum = (num1, num2) => num1 + num2;
    // 等同于
    var sum = function(num1, num2) {
    return num1 + num2;
    }; //小案例将数字字符串转换成数字数组

    var datas= '1,3,0,0,0,0,0,0,0,0';
    datas = datas.split(",");
    var IntArr=datas.map(data=>{console.log(data); return +data;});//保存转换后的整型字符串
    console.log(datas); // console.log`${datas}`
    console.log(IntArr);

    箭头函数有几个使用注意点。

    (1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

    (2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。

    (3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。

    (4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数。

数组的扩展:

  • 扩展运算符:

    扩展运算符(spread)是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。
    console.log(...[1, 2, 3])
    // 1 2 3 console.log(1, ...[2, 3, 4], 5)
    // 1 2 3 4 5 [...document.querySelectorAll('div')]
    // [<div>, <div>, <div>]
    function f(v, w, x, y, z) { }
    var args = [0, 1];
    f(-1, ...args, 2, ...[3]);
  • 数组的合并
    // ES5
    [1, 2].concat(more)
    // ES6
    [1, 2, ...more] var arr1 = ['a', 'b'];
    var arr2 = ['c'];
    var arr3 = ['d', 'e']; // ES5的合并数组
    arr1.concat(arr2, arr3);
    // [ 'a', 'b', 'c', 'd', 'e' ] // ES6的合并数组
    [...arr1, ...arr2, ...arr3]
    // [ 'a', 'b', 'c', 'd', 'e' ]
  • 扩展运算符可以与解构赋值结合起来,用于生成数组。
    const [first, ...rest] = [1, 2, 3, 4, 5];
    first //
    rest // [2, 3, 4, 5] const [first, ...rest] = [];
    first // undefined
    rest // [] const [first, ...rest] = ["foo"];
    first // "foo"
    rest // [] //如果将扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错。
  • 字符串转数组
    [...'hello']
    // [ "h", "e", "l", "l", "o" ]

对象的扩展:

  • 属性和函数的简写

    function f(x, y) {
    return {x, y};
    } // 等同于 function f(x, y) {
    return {x: x, y: y};
    } f(1, 2) // Object {x: 1, y: 2} var o = {
    method() {
    return "Hello!";
    }
    }; // 等同于 var o = {
    method: function() {
    return "Hello!";
    }
    };

关于ES6语法的 一些新的特性的更多相关文章

  1. ES6语法:函数新特性(一)

    ES6 函数 引言: 函数在任何语言中偶读很重要,java里面的函数通常叫做方法,其实是一个东西,使用函数可以简化更多的代码,代码结构看着更加清晰.今天我们来学学ES6语法中,函数有什么变化. 虽然现 ...

  2. ES6语法的新特性

    ES6 就是ECMAScript 6是新版本JavaScript语言的标准.虽然目前已经更新到ES7,但是很多浏览器还不知处ES7语法,该标准仍在更新中,但目前部门网站都指出ES6的语法.目前ES6也 ...

  3. es6/es7/es8常用新特性总结(超实用)

    本文标题有误导性,因为我其实想写node8的新特性,说实话一下子从node v1.x跳跃到node 8.x+ 真有点受宠若惊的感觉.一直觉得node 数组. 对象.序列等的处理没有python方便,因 ...

  4. ES6的十大新特性(转)

    add by zhj: 该文章是由国外一哥们写的,由腾讯前端团队翻译,图片中的妹子长得挺好看的,很养眼,嘿嘿.我目前在学习ES6,这篇文章把ES6的 几个主要新特性进行了归纳总结,犹如脑图一般,让人看 ...

  5. ES6中的一些新特性

    这两个命令是ES6的新语法知识.这两个新的特性解决了ES6中的一些小的"bug"问题.其中包含一些知识:块级作用域.let命令.const命令.全局对象的属性.Google V8引 ...

  6. 如何在webpack开发中利用vue框架使用ES6中提供的新语法

    在webpack中开发,会遇到一大推问题,特别是babel6升级到babel7,要跟新一大推插件,而对于安装babel的功能就是在webpack开发中,vue中能够是用ES6的新特性: 例如ES6中的 ...

  7. es6中的部分新特性

    1.es6中变量声明可以使用let声明变量,用const声明常量.例: test:function(){ { var num=10; let num1=11; const num2=12; } con ...

  8. 如何让浏览器支持ES6语法,步骤详细到小学生都能看懂!

    为什么ES6会有兼容性问题? 由于广大用户使用的浏览器版本在发布的时候也许早于ES6的定稿和发布,而到了今天,我们在编程中如果使用了ES6的新特性,浏览器若没有更新版本,或者新版本中没有对ES6的特性 ...

  9. ES6语法知识

    let/const(常用) let,const用于声明变量,用来替代老语法的var关键字,与var不同的是,let/const会创建一个块级作用域(通俗讲就是一个花括号内是一个新的作用域) 这里外部的 ...

随机推荐

  1. 前端div+css

    css基本结构: css的四种引入方式: 1.行内式:是在标记的style属性中设定CSS样式.这种方式没有体现出CSS的优势,不推荐使用. <p style="background- ...

  2. JS中对象的定义及相关操作

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  3. Windows 实用软件

    Useful tool Listary Ditto Winsnap Quick Look Myper Splash GifCam ScreenToGif Free Download Manage Si ...

  4. 做股票软件用的各种k线图

    这是各种k线图地址: http://echarts.baidu.com/echarts2/doc/example.html 个人公众号谢谢各位老铁支持 本人qq群也有许多的技术文档,希望可以为你提供一 ...

  5. layui table 分页 记住之前勾选的数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. git详细使用教程

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...

  7. Spring Boot 之Profile

    Profile Profile是Spring对不同环境提供不同配置功能的支持,可以通过激活.指定参数等方式快速切换环境. 1)多Profile文件 我们在主配置文件编写的时候,文件名可以是:appli ...

  8. django orm(2)

    目录 聚合函数 分组查询 F与Q查询 F查询 Q查询 事务 Django中的事务 orm字段及参数 自定义char字段 聚合函数 这里的聚合函数和SQL里的聚合函数对应,在使用前需要先进行模块的导入: ...

  9. [每日一讲] Python系列:数字与运算符

    数字(数值)型 Python 数字数据类型用于存储数值.数据类型是不可变(immutable)的,这就意味着如果改变数字数据类型的值,将重新分配内存空间. Python 支持三种不同的数值类型: 整型 ...

  10. 使用Spring.Net进行Webservice开发&发布遇到的问题

    发布遇到的问题1: HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理. 最终解决时IIS的设置情况: 1.应用程序池的高级设置中 启用32 ...