不是说数组成员严格等于undefined 吗 为什么var [foo = 2] = [] 中空[]并不是undefined.默认值foo = 2 也生效了呢
如果一个数组成员严格等于undefined,默认值是会生效的,其它情况不会生效。
var [foo = 2] = [] //因为数组成员严格等于undefined,所以此时foo的默认值2是生效的,此时foo为2.
var [foo = 2] = [null] //因为数组成员为null,不等于undefined,默认值不生效,所以此时foo为null
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
你的例子可以改写成如下:
只有arr[0]不等于undefined时,foo在不会使用默认值。但对于一个空数组,arr[0]当然是undefined,所有foo也会使用默认值2