1、let/const
let定義變量,可以被重新賦值。const定義常量,不能被重新賦值。
2、解構賦值
解構賦值就是:按照一定的模式從數組或對象中取值,對變量進行賦值的過程。
注:
1.使用解構賦值,將會使等效的代碼變得更加簡潔並且可讀性更高; 2.本質上,解構賦值屬於一種“模式匹配”、“映射關系”; 只要等號兩邊的模式相同,一一對應,左邊的變量就會被賦予右邊對應的值。
3.對象,數組,塊級作用域
//JS: var obj = {a:100,b:200} var a = obj.a var b = obj.b var arr = ['xxx','yyy','zzz'] var x = arr[0] //ES6解構賦值: const obj = {a:10,b:20,c:30} const {a,c} = obj console.log(a) console.log(c) const arr = ['xxx','yyy','zzz'] const [x,y,z] = arr console.log(x) console.log(y)
3、模板字符串
使用 ` ` 模板字符串中嵌入變量,需要將變量名寫在${}之中。比普通js拼接字符串方便很多
var name = "Bob", time = "today"; `Hello ${name}, how are you ${time}?`
4、塊級作用域
var a=1; function f(){ console.log(a); if(false){ var a='字符串變量'; } } f() // undefined
es5中,函數作用域覆蓋全局作用域,得到變量提示。
var a = 1 設置的是全局變量,但是fn()的時候打印出了undefined,這是因為if(){ } 這個函數方法,函數里面的a提到了最前面,初始化a,給了一個undefined。
在es6中,用let命令新增了塊級作用域,外層作用域無法獲取到內層作用域,非常安全明了。
即使外層和內層都使用相同變量名,也都互不干擾。
{ { let food = 'apple'; console.log(food); // apple } let food = 'orange'; console.log(food); // orange }
5、箭頭函數
1. 箭頭函數基本形式
let func = (num) => num; let func = () => num; let sum = (num1,num2) => num1 + num2; [1,2,3].map(x => x * x);
2. 箭頭函數特點
參考:https://www.cnblogs.com/mengff/p/9656486.html
(1). 箭頭函數this為父作用域的this,不是調用時的this
箭頭函數的this永遠指向其父作用域,任何方法都改變不了,包括call,apply,bind。
普通函數的this指向調用它的那個對象。