一、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. 带动画效果的jQuery手风琴

    带动画效果的jQuery特效手风琴是一款带动画效果的手风琴作品,非常实用,可以用在新闻列表.FAQ等模块,默认的是打开第一个选项,查看其它的时候直接点击加号按钮就展开. 源码地址:http://www ...

  2. hdu 1002 A + B Problem II(大数)

    题意:就是求a+b (a,b都不超过1000位) 思路:用数组存储 第一道大数的题目,虽然很水,纪念一下! 代码: #include<cstdio> #include<cstring ...

  3. Go丨语言对MySQL数据库的增、删、改、查操作

    1.建立数据库名为: go_test_db 2.建表名为:userinfo 字段: uid int username varchar language varchar created varchar ...

  4. linux命令学习笔记(54):ping命令

    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器, 看是不是开着”.不能打开网页时会说“你先ping网关地址192.168.1.1试试” ...

  5. jQuery 下拉框输入匹配提示选项

    做页面输入时,为方便输入和提高用户体验,常用下拉框,当下拉选项数据很多时,也不易找到想要的选项,这时,提供一种下拉框输入匹配提示选项,如下: 图示

  6. Codeforces 758A. Holiday Of Equality 贪心

    题目大意: 给定一个长为\(n\)序列,每次操作在一个数上+1,求最小的操作次数使所有的数大小相同. 题解: 对这种题无话可说 #include <cstdio> #include < ...

  7. 浏览器,tab页显示隐藏的事件监听--页面可见性

    //监听浏览器tab切换,以便在tab切换之后,页面隐藏的时候,把弹幕停止 document.addEventListener('webkitvisibilitychange', function() ...

  8. 查看SELinux状态&关闭SELinux

    1. 查看SELinux状态 1.1 getenforce getenforce 命令是单词get(获取)和enforce(执行)连写,可查看selinux状态,与setenforce命令相反. se ...

  9. Spring boot 学习 九

    一:经过试验发现,如果使用如下的Controller(@RequestBody), 前台POST的请求body只能是JSON,如果是form-data, X-www-form-urlencoded 或 ...

  10. Autofac依赖注入框架使用

    简介: Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高 控制反转和依赖注入: 控制反转 IOC(Inver ...