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