1 块级做用域javascript
在es6以前,js只有全局做用域和函数做用域,let关键字引入了块级做用域java
2 暂时性死区es6
var 声明的变量能够在声明以前使用,至关于默认为其声明其值为undifind;数组
let 声明的变量,只能先声明后使用,声明以前使用会报错函数
3 const命令this
const是用来定义常量,声明的同时必须当即初始化。spa
4 解构赋值prototype
let [a,b,c]=[1,2,3];//a=1;b=2;c=3 let{ a=2; b; c=4}={...{a:3,b:4}};//a=3;b=4;c=4 let { a=2; b; c=4}={a:3,b:4};//a=3;b=4;c=4 let [a,b,c,d,e]='hello'; 能够理解为模式匹配
5 模板字符串code
模板字符串采用反引号``标示,而且模板字符串中的空格、换行将在输出时有所保留对象
let name='zhangsan'; `<span>${name}</span>`
${主体} 主体能够是表达式、运算、对象属性还能够是函数,如果字符串将直接输出这个字符串
6 含参函数的调用
function say(str){alert(str)} say`hello`等同于say('hello')
7 函数function
function add(a=2,b=3){ return a+b } add(3);//6 add(1,1);//2
为函数的参数添加默认值,执行函数时若是不传改参数,那么就用默认值替换;
8 箭头函数
var 变量名/函数名=(参数,参数)=>{代码块}
var f=v=>v 等同于 var f=function(v){return v} var f=()=>5 等同于 var f=function(){return 5} var sum=>(num1,num2)={num1+num2} 等同于 function sum(sum1,sum2){return num1+num2}
若是return的是一个对象,省略return的箭头函数中右边须要用()包起来
demo var obj=()=>({a:2})
等同于:
var obj=function(){retrun {a:2}}
9 数组的扩展
扩展运算符为三个点...,将一个数组转化为参数序列,一般与函数一块儿使用
function sum(num1,num2){return num1+num2} sum(...[2,3]);//5
数组的合并[...arr1,...arr2]
字符串转字符数组[...'hello'] //["h","e","l","l","o"]
10 数组的方法
10.1 Array.from() 用于将两类对象转化为数组 1 类数组对象 2 实现Iterator接口的对象
若是参数是一个数组,直接返回一个同样的数组,能够接受第二个参数,与map的功能相似
let arr=Array.from([1,2,3],x=>x*x);//[1,4,9]
10.2 Array.of() 用于将一组值,转化为数组
基本上能够用来替换Ayyay()或者ne
[3,4,5,30,50,100].find(fn,person);//此时fn中的this指向person,返回值是30;
另外这两个方法均可以发现NaN,弥补了数组indexOf方法的不足
10.6 fill()
fill 方法用于用给定值填充一个数组
new Array(3).fill(5)[5,5,5] new Array(3).fill('') //['','',''] [2,3,4].fill(6) //[6,6,6]
能够有第二个 第三个参数,指定填充开始的位置和结束的位置
[2,3,4,5,6,7].fill(0,2,5) //[2, 3, 0, 0, 0, 7]
若是填充的类型为对象,那么被赋值的是同一个内存地址的对象,而不是深拷贝的对象。
10.7 数组实例的entries() keys() values()
都返回一个遍历器对象,能够用for...of循环进行遍历,惟一的区别是keys()是对键名的遍历values()是对键值的遍历 entries是对键值对的遍历
let arr=['a','b','c']; for(let index of arr.keys()){} for(let elem of arr.values()){} for(let [index,elem] of arr.entries()){} 10.7 includes() Array.prototype.includes() 方法返回一个布尔值,表示某个数组是否包含给定的值;与indexOf()相似,includes能够判断NaN,indexOf不能够
函数的length属性 返回没有指定默认值的参数的个数。若是指定默认值,length将失效
(function(a,b,c){}).length//3 (function(){}).length//0 (function(a=1,b=2){}).length//0 (function(a){}).length//1 (function(a,b=2){}).le