ES6函数默认值产生两个私有上下文(阿里面试题)
- 只要函数中有ES6形参赋值默认值(无论是否生效)
- 函数体中出现基于let/const/var声明变量的操作(没有function),无论声明的是啥变量
只要这两个条件同时成立,则函数执行会产生两个上下文
- 函数私有上下文——形参赋值完即结束
- 会把函数体当作一个块级上下文,并且上级上下文就是函数私有上下文(上面那个形参赋值)
- 并且如果块级中的某个变量和函数私有上下文中的形参是一个名字,则默认会把函数私有上下文中形参的值,同步给块中这个上下文一份
var x = 1;
function func(x, y = function anonymous(){
x = 2}) {
var x