ES6新增內容總結


ES6新增內容有:1,模塊化思想。2,關於變量let和const。3,解構賦值。4,字符串的擴展。5,函數的擴展。6,箭頭函數。7,繼承apply的用法

以下就是詳解:

1:模塊化思想

  非模塊化有命名的沖突,文件依賴的缺點,而模塊化思想解決了這樣的問題,一個文件即一個模塊模塊的導出,通過exports 和module.exports。

export:

在一個模塊文件里可以有多個export用於暴露模塊的接口,但只能有一個export default用於暴露模塊的默認接口,例如:

export const myStr = 'hello world'
export const myNum = 1000
export const myBoole = false
export default {
id: 1,
title: 'this is title',
}

import:

引入模塊的時候通過export暴露的接口需要用{}包起來,通過export暴露的接口則不用,例如:

// 引入默認輸出對象
import defaultObj from './test.js'
// 引入多個輸出變量
import {myStr, myNum, myBoole} from './test.js'
// 同時引入默認輸出對象和多個輸出變量
import defaultObj {myStr, myNum, myBoole} from './test.js'
var module=require('filePath');
  • 模塊文件的后綴: .js .json .node

    加載優先級(不寫后綴的情況下).js->.json->.node

2.關於變量let和const總結

  let聲明的變量不存在預解析,在塊級作用域內不允許重復聲明,在塊級作用域外不可訪問let和const聲明的變量。const是用來聲明常亮,不允許重新賦值,聲明時必須初始化

3.解構賦值

/*變量的結構賦值*/
//數組的結構賦值
let [a,b,c,d]=[1,2,3,5]; console.log(a,b,c,d); /*對象的結構賦值*/
/*let {name,age}={name:'小明',age:20}; console.log(name,age);*/
// 對象屬性別名
let {name:firstName,age}={name:'小明',age:20}; console.log(firstName,age); let {sin,cos}=Math; console.log(typeof sin); console.log(typeof cos); /*字符串的結構賦值*/ let[h,g,j]='jefiwi'; console.log(h,g,j);
4.字符串的擴展
  includes()//判斷字符串是否包含字符串,第一個參數要判斷的字符串,第二個參數從索引為多少開始。舉個簡單的例子
var arr = "abcdefghi"; console.log(arr.includes("j")) //false
console.log(arr.includes("d")) //true
console.log(arr.includes("d",5)) //false
console.log(arr.includes("d",3)) //true
  第二個參數可以不寫,默認為0
  還有就是模板字符串
    假如說現在有一個列表,列表內容是循環得出的,這個時候我們就要在循環內部寫結構標簽
var arr = ['11','22','33']; var str = ""; for(var i = 0;i<arr.length;i++){ str +=` <li>${arr[i]}</li>
 ` }; console.log(str) /* *<li>11</li> *<li>22</li> *<li>33</li> */
這時,我們就可以把 str,放在我們想要的地方了
5.函數的擴展
1.默認值. 2.參數解構賦值,3.rest參數 4 ... 擴展符.
 1 //默認值
 2 function print(a=10,b=2,c=1){  3     let result=a+b+c;  4  console.log(result);  5 }  6 print();  7 //解構賦值
 8 function foo({name='小明',age=18}={}){  9  console.log(name,age); 10 } 11 foo(); 12 foo({name:'小紅',age:20}); 13 //rest參數
14 function restParam(a,b,...param){ 15  console.log(a); 16  console.log(b); 17  console.log(param); 18 19 } 20 restParam(1,2,3,56,6,9,45,12); 21 1
22 2
23 [ 3, 56, 6, 9, 45, 12 ] 24 //...擴展符 在函數調用時將數組轉換為單個參數。
25 function restParam(a,b,c,d,e){ 26     console.log(a+b+c+d+e); 27 28 } 29 let arr=[20,30,45,56,30] 30 restParam(...arr); 31 //合並數組
32 let arr1=[12,5]; 33 let arr2=[45,89]; 34 let arr3=[...arr1,...arr2] 35

 

6.箭頭函數
1     let foo=(a,b)=>{ 2         console.log(a+b) 3  }; 4     foo(10,20) 5     //以上寫法就相當於
6     function foo(a,b){ 7         return console.log(a+b) 8  }; 9     foo(10,20)
箭頭函數注意事項
1.this取決於函數的定義,而不是調用。
2.箭頭函數不用new關鍵字
3.箭頭函數不可以使用arguments獲得參數列表,可以使用rest參數代替


7.apply
 
語法 定義 說明
call(thisObj,Object) 調用一個對象的一個方法,以另一個對象替換當前對象。 call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的對象上下文從初始的上下文改變為由 thisObj 指定的新對象.如果沒有提供 thisObj 參數,那么 Global 對象被用作 thisObj
apply(thisObj,[argArray]) 應用某一對象的一個方法,用另一個對象替換當前對象。 如果 argArray 不是一個有效的數組或者不是 arguments 對象,那么將導致一個 TypeError。如果沒有提供 argArray 和 thisObj 任何一個參數,那么 Global 對象將被用作 thisObj, 並且無法被傳遞任何參數
 
 
        
 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM