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. CRMEasy知识库点击无法弹出窗体问题

    丢失控件   MSDATLST.OCX 将此控件放在路径下    C:\Windows\System32 并进行注册,具体方法为: 打开控件方式选择   C:\Windows\System32\reg ...

  2. tr 替换或删除字符

    1.命令功能 tr 从标准输入中替换,压缩间隔或者删除字符并从定向到标准输出. 2.语法格式 tr  option  SET1  SET2 参数 参数说明 -c 取代所有SET1中字符串 -d 删除所 ...

  3. Comet OJ - Contest #5 D 迫真小游戏 (堆+set)

    迫真小游戏 已经提交 已经通过 时间限制:2000ms 内存限制:256MB 73.98% 提交人数:196 通过人数:145 题目描述 H君喜欢在阳台晒太阳,闲暇之余他会玩一些塔防小游戏. H君玩的 ...

  4. Dinic二分图匹配 || Luogu P3386

    题面:[模板]二分图匹配 思路:Dinic实现二分图匹配,要建一个超级源点(S)和超级汇点(T),分别定为N+M+1和N+M+2 然后S去和N中的数建正边和反边,正边权值为1,反边权值为0:M中的数去 ...

  5. js 动态时间

    <script type="text/javascript"> function show_cur_times(){ //获取当前日期 var date_time = ...

  6. C++ GUI Qt4编程-创建自定义窗口部件

    C++ GUI Qt4编程-创建自定义窗口部件   Qtqt4 通过Qt窗口部件进行子类化或者直接对QWidget进行子类化,就可以创建自定义窗口部件,下面示范两种方式,并且也会说明如何把自定义窗口部 ...

  7. 【leetcode】1106. Parsing A Boolean Expression

    题目如下: Return the result of evaluating a given boolean expression, represented as a string. An expres ...

  8. 1px像素问题(移动端经典问题)

    1.物理像素:移动设备出厂时,不同设备自带的不同像素,也称硬件像素: 逻辑像素:即css中记录的像素 在开发中,为什么移动端CSS里面写了1px,实际上看起来比1px粗:了解设备物理像素和逻辑像素的同 ...

  9. 20191213用Python实现replace方法

    def myReplace(s,sub, dest, times =None): #如果times是None,替换的次数是s.count(sub) if times == None: times = ...

  10. linux运维、架构之路-Kickstart无人值守

    一.PXE介绍          PXE全名Pre-boot Execution Environment,预启动执行环境:通过网络接口启动计算机,不依赖本地存储设备或本地已安装的操作系统:Client ...