鍍金池/ 問答/HTML/ ES6的變量解構(gòu)-默認(rèn)值惰性求值

ES6的變量解構(gòu)-默認(rèn)值惰性求值

clipboard.png
什么是惰性求值呢?為什么上面那部分代碼等價(jià)的時(shí)候,下面這一塊代碼會(huì)有一個(gè)1,這個(gè)0是怎么來的呢?(正在看阮老師的ES6入門,這部分不是很理解)

回答
編輯回答
舊時(shí)光

[1][0] 的意思就是一個(gè)數(shù)組 [1] 它的 0 號(hào)位呀。

我把上面的代碼這樣改寫一下你看能不能明白:

const arr = [1]
function f () {}

// 如下兩種寫法等價(jià)
// 1.
let [x = f()] = arr

// 2.
let x
if (arr[0] === undefined) {
  x = f()
} else {
  x = arr[0]
}

如果這里能明白的話,繼續(xù)往下看

惰性求值怎么理解呢,這樣,我寫下如果不是惰性求值的話,上面的寫法 1 等價(jià)于什么:

// 如果不是惰性求值,上面的寫法 1 與下面的寫法 3 等價(jià)
// 3.
const defaultValue = f()
let x
if (arr[0] === undefined) {
  x = defaultValue
} else {
  x = arr[0]
}

區(qū)別就在于,惰性求值的情況下 f() 并非一定會(huì)執(zhí)行。

希望對(duì)你有幫助

2018年8月24日 12:27