一、let const 命令

  

'use strict';
/*function test(){
//let a = 1;
for(let i=1;i<3;i++){
console.log(i)
}
console.log(i); //引用错误 let a = 1;
let a= 2; //报错 let 不能重复定义同一个变量
}
test();
*/
function last(){
const PI = 3.1515926;
//const 也具有块级作用域 const 声明变量时 *必须赋值
// PI = 8; 报错 const声明的原始类型常量无法修改 PI is readOnly
// console.log(PI); const K = {
a:1
};
K.b=3; //const声明的引用类型可以随意修改 const指向指针
K.a = 0;
console.log(PI,K);
}
last();

二、解构赋值

  

{
let a, b, reset;
[a, b] = [1, 2];
console.log(a, b); // a =1 b =2
} {
let a, b, reset;
[a, b, ...reset] = [1, 2, 3, 4, 5, 6];
console.log(a, b, reset); //a = 1 b= 2 reset = [3,4,5,6]
} {
let a, b;
({a, b} = {a: 1, b: 2});
console.log(a, b) //1,2
} {
let a, b, c;
[a, b, c = 3] = [1, 2];
console.log(a, b, c); //1,2,3 [a, b, c] = [1, 2];
console.log(a, b, c); //1,2, undefined
} {
let a = 1; // 使用场景 1 、变量交换
let b = 2;
[a,b]=[b,a];
console.log(a,b); // 2 1
} {
function f (){ // 使用场景 2、 接收函数返回的多个值
return [1,2];
}
let a ,b;
[a,b]=f();
console.log(a,b); //1 2
} {
function f(){
return[1,2,3,4,5]
}
let a,b,c;
[a,,,b,c]=f();
console.log(a,b,c) //1 4 5 选择性接收
}
{
function f(){
return[1,2,3,4,5]
}
let a,b,c;
/*
[a,...b]=f();
console.log(a,b) //1 [2,3,4,5] 选择性接收
*/
[a,,...b]=f();
console.log(a,b) //1 [3,4,5] 选择性接收
} {
let o = {p:42,q:true};
let {p,q} = o;
console.log(p,q); // 42 true
} {
let {a=10,b=5} = {a:3};
console.log(a,b) // 3 5
} {
let metaData = {
title:'abc',
test:[{
title:'test',
desc:'description'
}]
}
let {title:esTitle,test:[{title:cnTitle}]} = metaData; console.log(esTitle,cnTitle); // abc test
}

三、RegExp扩展

{
// ES5 中创建 RegExp 对象的两种方式
let regexp = new RegExp('xyz', 'i'); // i 忽略大小写
let regexp1 = new RegExp(/xyz/i); console.log(regexp.test('xyz123')); //true
console.log(regexp1.test('xyz123')); //true // ES6 let regexp2 = new RegExp(/xyz/ig,'i'); //ES6中可以接受两个参数 第二参数会覆盖修饰符
console.log(regexp2.flags); // i RegExp.flags 得到修饰符
} {
let s = 'bb_bbb_bbbb';
let a1 = /b+/g;
let a2 = /b+/y; /*
* 修饰符 g y
* g修饰符会在匹配过程中碰到不匹配的字符就忽略
* y修饰符从开始检测在碰到不匹配的字符就停止 粘连模式
* */ console.log('one',a1.exec(s),a2.exec(s)); //[bb] [bb]
console.log('two',a1.exec(s),a2.exec(s)); //[bb] null //RegExp.sticky 判断一个正则对象是否开启的粘连模式
console.log(a1.sticky,a2.sticky); //fasle true
} {
/*
* 修饰符 u 通关unicode码来匹配 对大于两个字符的要用 u 来匹配
* */ }

四、String扩展

{
/*
* 字符UNICODE表示法
* */
console.log('a', `\u0061`); //a a
console.log('s', `\u20bb7`); //s ₻7 当unicode码超过了 0xffff 时 会显示为两个字符
//\u20bb 7
console.log('s', `\u{20bb7}`); //s

ES6新特性使用小结(一)的更多相关文章

  1. ES6新特性使用小结(三)

    九.数据类型 Symbol /* * Symbol 数据类型 概念: Symbol 提供一个独一无二的值 * */ { let a1 = Symbol(); let a2 = Symbol(); co ...

  2. ES6新特性使用小结(六)

    十三.promise 异步编程 ①.使用 promise 模拟异步操作 { //ES5 中的 callback 解决 异步操作问题 let ajax = function (callback) { c ...

  3. ES6新特性使用小结(四)

    十一.Proxy .Reflect ①.Proxy 的概念和常用方法 { let obj = { //1.定义原始数据对象 对用户不可见 time: '2017-09-20', name: 'net' ...

  4. ES6新特性使用小结(二)

    六.Array 扩展 /* * Array Api Array.of 数组的构建 * */ { let arr = Array.of(, , , , , ); console.log(arr); // ...

  5. ES6新特性使用小结(五)

    十二.class 与 extends ①.类的基本定义和生成实例 { class Parent{ constructor(name='Lain'){ //定义构造函数 this.name = name ...

  6. ES6新特性概览

    本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony( ...

  7. ES6新特性之模板字符串

    ES6新特性概览  http://www.cnblogs.com/Wayou/p/es6_new_features.html 深入浅出ES6(四):模板字符串   http://www.infoq.c ...

  8. Atitit js版本es5 es6新特性

    Atitit js版本es5 es6新特性 Es5( es5 其实就是adobe action script的标准化)1 es6新特性1 Es5( es5 其实就是adobe action scrip ...

  9. ES6新特性:Proxy代理器

    ES6新特性:Proxy: 要使用的话, 直接在浏览器中执行即可, node和babel目前还没有Proxy的polyfill;,要使用的话,直接在浏览器中运行就好了, 浏览器的兼容性为:chrome ...

随机推荐

  1. matlab之text()函数

    text()函数用来给图加上说明性文字. 格式:text(x,y,'txt') 或者:text(x,y,'txt','color','k') x,y是位置 txt是说明文字,如果说明性文字是数字,则这 ...

  2. Android SDK Manager更新问题

    1.如果是windows7,那么"开始-->所有程序-->Android SDK Tools-->右键SDK Manager-->以管理员身份运行(A)"2 ...

  3. h5打电话发短信写邮件怎么实现

    // 一.打电话<a href="tel:0755-10086">打电话给:0755-10086</a> // 二.发短信,winphone系统无效< ...

  4. ffmpeg下载直播流

    ffmpeg -i "http://www.xxx.com/test.flv" -c:v copy -c:a copy -bsf:a aac_adtstoasc output.mp ...

  5. PHP中调用接口

    引用:http://zhidao.baidu.com/question/454935450.html&__bd_tkn__=67bd5d3a742a8b244e09a86fb8b824aa95 ...

  6. nginx的fastcgi_param参数详解

    在配置nginx的时候,有很多fastcgi_param参数,具体对应是什么值呢 引入:fastcgi_params 文件: fastcgi_params文件具体内容: postman 发送请求: n ...

  7. 《java编程思想》:设计模式(不定期更新)

    1.策略设计模式 创建一个能够根据所传递的参数对象的不同而具有不同的方法,被称为策略设计模式.这类方法包含索要执行的算法中固定不变的部分,而“策略”包含变化的部分.策略就是传递进去的参数对象.在下面的 ...

  8. mac下配置xampp的vhost

    1 先确定在httpd.conf文件(/Applications/XAMPP/xamppfiles/etc/httpd.conf)中,引入了vhosts.conf文件. 1.1 在httpd.conf ...

  9. RT-Thread信号量使用(动态/静态信号量) 及 信号量的四种使用场合

    信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用.在进入一个关键代码段之前,线程必须获取一个信号量:一旦该关键代码段完成了 ...

  10. DBS:目录

    ylbtech-DBS:目录 1.返回顶部 1.   2. 2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   7.返回顶部   8.返回顶部   9.返回顶 ...