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