關於ES6中變數的解構賦值的問題?
其實很好理解的。。靜下心來思考一下就會發現並沒有多複雜
1。 ”表示式是惰性求值,只有在用到的時候才會求值“,這句話是什麼意思?什麼時候會用到並求值?
let
func
=
()
=>
{
return
1
}
let
[
a
=
func
()]
=
[]
console
。
log
(
a
)
// 1
let
[
b
=
func
()]
=
[
2
]
console
。
log
(
b
)
// 2
當使用陣列的解構賦值時,可以給a變數傳入預設值,而這個預設值成立的條件就是等號右邊對應的全等於undefined
a變數在解構時沒有找到對應的值,因此為undefined,而undefined === undefined,所以會採用預設值1
b變數在解構時找到了對應的值,2 !== undefined,所以打印出2
預設值的惰性求值的成立條件:等號右邊對應的值不全等於undefined
2。 等價的程式碼是怎麼來的,完全沒看懂。if([1][0] === undefined )中[1][0]指向的什麼?
其實阮一峰老師簡寫了。。
let arr = [1]
arr[0]
什麼是解構
ES6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構(Destructuring)。
解構是ES6的新特性, 比ES5程式碼簡潔,清晰,減少程式碼量;
ES5中的為變數賦值,只能直接指定值;
var a = 1; var b = 2; var c = 3;
var [a,b,c] = [1,2,3]; 這種寫法屬於“模式匹配”,只要等號兩邊的模式相同,左邊的變數就會被賦予對應的值;
物件解構的寫法
let {id,name} = {id:1,name:‘fangfang’}; 更方便
解構在vue中用的很多,比如vuex中的actions物件
const actions={
increment(context){
context。commit(‘add’);
},
另一種寫法,這也是解構的一種方式
increment({commit, state}){
commit(‘add’);
}
}