猿问

请问函数参数声明是let声明的吗?

varx=1;
functionfoo(x=x){
//...
}
foo()//ReferenceError:xisnotdefined
上面代码中,参数x=x形成一个单独作用域。实际执行的是letx=x,由于暂时性死区的原因,这行代码会报错”x未定义“。
以上是阮一峰老师的教程内容http://es6.ruanyifeng.com/#do...
想请教一个问题,如果是let声明的话,那么为什么如果在函数体内用var重复声明变量x没有报错呢?
一旦设置了参数的默认值,函数进行声明初始化时,参数会形成一个单独的作用域(context)。等到初始化结束,这个作用域就会消失。这种语法行为,在不设置参数默认值时,是不会出现的。
如果是这个原因,那么为什么用let重复声明就会报错呢,毕竟是不同的作用域
-------------------分隔线-------------------
呃,非常感谢大家的回答,我理解什么是let的暂时性死区。。我不明白的是,为什么说函数参数是let声明的
开心每一天1111
浏览 477回答 2
2回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答