分别执行上面的两个函数,F1不会报错,F2报错提示变量重复。如果函数的参数a是以let a的形式声明的,那么函数体内无论是var a还是let a都应该是重复声明变量的啊,难道不是都应该会报错的吗?为什么只有F1报错呢?求大神指导~
2 回答
慕仙森
TA贡献1827条经验 获得超8个赞
首先说
“如果函数的参数a是以let a的形式声明的,” 这里你传递的参数并没有通过let声明;
再说
就算你传递的参数是通过let声明的,声明是在这个函数执行的作用域外,也不影响函数内部的let声明;
之所有前面不报错是因为参数本质上就是函数内部的一个var 声明对象,所以再次var 声明覆盖是没有问题的。
let声明则不允许覆盖前面的同名声明
添加回答
举报
0/150
提交
取消
