ES6:  ECMA 第六次改版
 
块级作用域:
  凡是被{ }包裹住的代码都是块级作用域,除了对象
      特点:会造成一个暂时性死区
 
 新增声明变量的两种方式:
let: 
   a. 不能重复被定义
   b.没有变量声明提升
   c.有块级作用域的用法,可以在块级作用域里做个保留
  
const:
    a.定义一个常量,不允许被修改
    b.没有变量声明提升
    c.声明了不能不允许不赋值
    d.支持块级作用域
 
字符串模板:
   ES6之前
var age = 20;
var str = "<div class = 'box'><span>"+age+"</span></div>"
 
 
 ES6之后
var age = 20;
var str = `<div class = 'box'><span>${age}</span></div>`
 
var age = "20";
var str = `<div class = 'box'><span>${age.slice(1)}</span></div>`  // 变量可以做很多js操作
 
 
 
字符串新增api:
includes:
 匹配当前字符是否出现在字符串中,如果存在则返回true,不存在则返回false
var str = "1906"
console.log(str.includes(5)) //false
console.log(str.includes(1)) //true
 
 
startsWith:
  匹配字符串的第一个字符 如果存在则返回true 不存在返回false
var str="1906"
console.log(str.startsWith(9)) //false
 
 
endsWith:
匹配字符串的最后一个字符 如果存在则返回true 不存在返回false
var str="1906"
console.log(str.endsWith(9)) //false
 
 
repeat(n) 重复多少次
var str="1906"
console.log(str.repeat(4) //代表当前这个句话重复4次
 
 
 
解构赋值:
     按照某种规则,将数据进行拆分
let arr = [10,20,30]
let [a,b] = arr
console.log(a,b)  //10 20
let [,c,d] = arr
console.log(c,d)  //20 30
 
let obj = {a:1,b:2}
let {a,b} = obj
console.log(a,b)  //1 2
 
var obj = {a:10,b:20,info:{name:"张三"}}
var {info:{name:_name}} = obj;
console.log(_name)  //张三
 
 
 
扩展运算符:
var arr = [10,20,30,40]
fn(...arr)  //将数组的值展开传入fn中
 
var obj = {width:"100px",height:"200px"}
var obj = {background:"red",lineHeight:"30px"}
var newObj = {...obj,...obj1}
console.log(newObj)    //   {width:"100px",height:"200px",background:"red",lineHeight:"30px"}将两个对象值展开合并到一个对象里
 
 
Symbol:独一无二
 
作用:保护对象的属性和值
          数据保护
 
    Symbol是一个函数,
    也是ES6新增的数据类型,基本数据类型变成6个
   for in 是遍历不出来对象中Symbol的属性
   一般情况下用来做对象的key值
const a = Symbol();
console.log(typeof a)   //Symbol
 
const a = Symbol("a");
const b = Symbol("a");
console.log(a == b)   //false
 
var obj = {}
var mySymbol = Symbol()
obj[mySymbol] =18
obj[Symbol()] =19
obj[Symbol()] =20
obj.a = 10
obj.b = 23
console.log(obj) //{Symbol():18,Symbol():19,Symbol():20,a:10,b:23}
 
//object.keys( ),这个方法可以获取对象身上所有的key值,不包括Symbol,返回值是一个数组
let arr = Object.keys(obj);
console.log(arr);  //["a","b"]
 
//获取Symbol的key值
var arr1 = Object.getOwnPropertySymbols(obj);
console.log(arr1) //[Symbol(),Symbol(),Symbol()]
console.log(obj[arr1[0]]) //18
 
 
对象新增方法
 
对象的简写:
let a = 10;
let obj = {
 //a=a;  
   a, //key与value值相同的情况下 ,可以写一个值
 // show:function(){}
  show(){}  //方法简写
}
 
 
Object.is( )  用来判断两个对象的索引是否指向同一索引地址
let obj = {a:10,b:20}
let obj1 = obj
let obj2 = {a:10,b:20}
console.log(Object.is(obj,obj1)) //true
console.log(Object.is(obj,obj2)) //false
 
 
Object.assign( )  合并对象
  参数1:需要合并的对象
  参数2:被合并的对象
  参数3:被合并的对象
    ......
返回值是一个新的对象
var obj = {a:10,b:13}
var obj1 = {c:131,d:23}
var newObject = Object.assign(obj,obj1)
console.log(newObj) //{a:10,b:13,c:131,d:23}
 
 
数组新增方法:
 
Array.of:将一组数值转换成数组
             返回值是一个数组
let arr = Array.of(1,2,3,4)
console.log(arr)  //[1,2,3,4]
 
 
includes:查找当前值是否属于当前数组  成功true  失败false
var arr = [12,13,14,111]
console.log(arr.includes(11))  //false
 
 
Array.from:将一个伪数组转换成纯数组
function fn(){
  console.log(Array.from(arguments))
}
fn(1,2,3,4,5)  //[1,2,3,4,5]
 
console.log(Array.from(arguments) instanceof Array) //true
 
 
Array.fill( )填充
参数1:需要填充的数据
参数2:(包括)填充开始的下标
参数3:(不包括)结束的下标
var arr = [10,20,30,40]
console.log(arr.fill("a",1,3)) //[10,"a","a",40]
 
 
Array.find( ) 根据条件找到相对应的值(最近的一个值)
var arr = [10,20,30,40]
var n = arr.find(function(item,index,array)){
  return item>20
}
console.log(n) //30
 
 
Array.findIndex( ) 根据条件找到相对应值的下标(最近的一个值)
var arr = [10,20,30,40]
var n = arr.findIndex(function(item,index,array)){
  return item>20
}
console.log(n) //2
 
 
函数参数的扩展   
ES6之前
function fn(a){
        var a = a || 10;  //用户传递参数就用参数,没传参数就是10
        console.log(a);
    }
    fn();   
 
ES6之后
function fn1(a=10){
        console.log(a);
    }
    fn1();  // 10
    fn1("aaa"); //"aaa"
 
 
箭头函数:
     简单的来说就是把function 换成了 =>
        var fn = ()=>{
            console.log("111")
        }
        fn();
    语法1:
          var fn = a=>a;
          console.log(fn(2))
          var fn = (a,b)=>a+b;
          不写{}代表的是return
     语法2:
            var fn = ()=>({})
            console.log(fn())
        特点:
            1、箭头函数中没有this的指向,在箭头函数中this的指向会指向离他最近的那个作用域
            2、箭头函数中没有arguments这个参数
            3、不能当做构造函数
            4、箭头函数不能当做generator函数
    
 												
												
								- es6新增特性总结
		
定义 ES6是ECMA为JavaScript制定的第6个标准版本,标准委员会决定,标准在每年6月正式发布并作为当年的正式版本,接下来的时间里就在此版本的基础上进行改动,直到下一年6月草案就自然变成新一 ...
		 
						- 10.1 ES6 的新增特性以及简单语法
		
ES6 的新增特性以及简单语法  let 和 const 模板字符串 箭头函数 对象单体模式 es6面向对象 模块化  let 和 const 之前一直用 var 来声明变量,ES6 新增 let 和 ...
		 
						- ES6(函数新增特性)
		
ES6(函数新增特性) 1.函数参数默认值 没有 y 时,默认就是world 有 y 时,输出值即可 (错误) (C有默认值,正确) 默认值后面不能再有没有默认值的变量 2.作用域 y 取其前面的 x ...
		 
						- ES6新增常见特性
		
一:声明属性let const var let const 区别 1.var声明变量会发生变量提升,let.const不会发生变量提升 2.var允许重复声明变量,let不可以 3.const声明变量 ...
		 
						- ES6 新特性
		
ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...
		 
						- ES6新特性概览
		
本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony( ...
		 
						- ES6 — 新增关键字let、const
		
ECMAScript 是什么? 首先,我们都知道JavaScript由三部分组成:ECMAScript,DOM,BOM: 其中的ECMAScript是Javascript的语法规范. ECMAScri ...
		 
						- 你不知道的JavaScript--Item24  ES6新特性概览
		
ES6新特性概览 本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代 ...
		 
						- 前端入门21-JavaScript的ES6新特性
		
声明 本篇内容全部摘自阮一峰的:ECMAScript 6 入门 阮一峰的这本书,我个人觉得写得挺好的,不管是描述方面,还是例子,都讲得挺通俗易懂,每个新特性基本都还会跟 ES5 旧标准做比较,说明为什 ...
		 
		
	
随机推荐
	
									- Linux架构之Nginx之HTTPS
			
第52章 Nginx之HTTPS 第52章 Nginx之HTTPS 1.HTTPS安全证书基本概述 1.1 模拟服务器篡改内容 1.1.1 配置目标网站nginx 1.1.2 配置网页 1.1.3 访 ...
			 
						- apply_test
			
//object apply_test {// def main(args:Array[String]): Unit ={// println("apply 方法:"+apply( ...
			 
						- angular,,以及深度拷贝问题;JSON.parse,JSON.stringify灵活运用
			
问题: $scope.list = [];$scope.listTree = {};$scope.dataTree = []; //获取listTree的数据$scope.getList = func ...
			 
						- DDD领域驱动设计初探(三):仓储Repository(下)
			
前言:上篇介绍了下仓储的代码架构示例以及简单分析了仓储了使用优势.本章还是继续来完善下仓储的设计.上章说了,仓储的最主要作用的分离领域层和具体的技术架构,使得领域层更加专注领域逻辑.那么涉及到具体的实 ...
			 
						- CSS3——PC以及移动端页面适配方法(流体布局)
			
流体布局:使用百分比来设置元素的宽度,元素的高度按照实际值. 但是流体布局中存在一个边框的问题,元素的边线无法计入百分比. 两种解决办法: 1)width:calc(20% - 4px) 2)widt ...
			 
						- jquery每次动态加载dom,绑定事件会多一次,
			
jquery绑定事件,每次动态加载dom,绑定的事件会加1,比如动态加载dom5次,点那个点击事件会弹出5次 解决办法就是在每次绑定之前解绑定. $('.seek-footer .btn1').off ...
			 
						- compile and link C/CPP programs on Mac
			
ref: https://stackoverflow.com/questions/29987716/cannot-use-gsl-library-on-macos-ld-symbols-not-fou ...
			 
						- 常用的JAVA第三方工具类
			
转自:https://www.jianshu.com/u/9c5cb1ee4c46 一. org.apache.commons.io.IOUtils 注解 说明 closeQuietly 关闭一个IO ...
			 
						- Maven的settings.xml配置详解
			
子节点详细介绍转载:http://www.cnblogs.com/jingmoxukong/p/6050172.html?utm_source=gold_browser_extension 全局配置  ...
			 
						- [转]Vue项目全局配置微信分享思路详解
			
这篇文章给大家介绍了vue项目全局配置微信分享思路讲解,使用vue作为框架,使用vux作为ui组件库,具体内容详情大家跟随脚本之家小编一起学习吧 这个项目为移动端项目,主要用于接入公众号服务.项目采用 ...