1.箭頭函數
ES6新增語法,用來簡化函數的書寫()=>{}
<script>//箭頭函數的基本使用let a = (a,b)=>{return a+b;}let c = a(1,2);console.log(c);//輸出3</script>
2.簡寫形式:
2.1參數:只有一個參數時可以省略小括號a=>{};
<script>let fn2 = a=>{return a+1;}let d = fn2(4);console.log(d);//輸出5</script>
2.2代碼塊:只有一行代碼時,可以省略大括號(a,b)=>a+b相當于(a,b)=>{return a+b};
<script>let fn3 = (a,b)=>a+b;let e = fn3(5,6);console.log(e);//輸出11</script>
2.3即省略()又省略{}:箭頭函數的返回值就是這一行代碼的執行結果a=>a+1
<script>let fn4 = a =>a+1;let f = fn4(3);console.log(f);//輸出4</script>
3.箭頭函數的特征
3.1不可以作為構造函數使用
<script>//箭頭函數let fn2 = ()=>{}let f21 = new fn2();//報錯fn2 is not a constructor,fn2不是一個構造函數</script>
3.2沒有自己的this關鍵字(代碼塊內部的this是所在作用域的this)
<script>//函數聲明function fn1(){console.log(this);//輸出對象{name: '張三', age: 18}}//箭頭函數let fn2 = ()=>{//console.log(arguments);//報錯,箭頭函數arguments不存在console.log(this);//輸出對象window}fn1.call({name:"張三",age:18});fn2.call({name:"李四",age:20});//箭頭函數沒有自己的this,輸出的是自己所在全局作用域window的this</script>
3.3沒有new.target屬性
4.new.target在函數內部,用來區分函數的調用方式;
4.1直接調用,new.target值為undefind
<script>function fn(){console.log(new.target);}//直接調用fn();//輸出undefind</script>
4.2通過new關鍵字調用,new.target值為函數本身
<script>function fn1(){console.log(new.target);}//實例化調用new fn1();//輸出結果如下圖</script>
5.模版字符串``(反引號,數字1左邊的鍵)
可以嵌套變量?,可以換行,用${變量名}嵌套變量,
<script>let title = '標題';let str = '<ul><li>'+title+'</li></ul>';//模版字符串``let str1 = `<ul><li>${title}</li></ul>`;console.log(str);console.log(str1);</script>
輸出結果如下