ES6的变量解构-默认值惰性求值

clipboard.png
什么是惰性求值呢?为什么上面那部分代码等价的时候,下面这一块代码会有一个1,这个0是怎么来的呢?(正在看阮老师的ES6入门,这部分不是很理解)

阅读 2.2k
1 个回答

[1][0] 的意思就是一个数组 [1] 它的 0 号位呀。

我把上面的代码这样改写一下你看能不能明白:

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

// 如下两种写法等价
// 1.
let [x = f()] = arr

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

如果这里能明白的话,继续往下看

惰性求值怎么理解呢,这样,我写下如果不是惰性求值的话,上面的写法 1 等价于什么:

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

区别就在于,惰性求值的情况下 f() 并非一定会执行。

希望对你有帮助

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题