为了账号安全,请及时绑定邮箱和手机立即绑定

js函数内部用var 与 let 申明与参数相同变量名的前者正常,后者报错

js函数内部用var 与 let 申明与参数相同变量名的前者正常,后者报错

潇潇雨雨 2019-03-11 20:07:08
一旦设置了参数的默认值,函数进行声明初始化时,参数会形成一个单独的作用域(context)。等到初始化结束,这个作用域就会消失。这种语法行为,在不设置参数默认值时,是不会出现的函数的扩展var x = 1;function foo(x, y = function() { x = 2; }) {  var x = 3;   y();  console.log(x); } foo() // 3x // 1var x = 1;function foo(x, y = function() { x = 2; }) {  let x = 3;   y();  console.log(x); } foo() // 报错,Uncaught SyntaxError: Identifier 'x' has already been declared为什么用在函数内部用var申明与相同的参数变量可行,且会覆盖参数中的同名变量;但是使用let 或 const 就会报错,我对使用 let 与 const 还能理解,因为参数处相当于是用 let x进行了申明,后面再用 let 进行申明,就报错了
查看完整描述

2 回答

?
森林海

TA贡献2011条经验 获得超2个赞

我之前也提过这样的问题,可以看一下我的自问我自答链接描述

查看完整回答
反对 回复 2019-03-11
  • 2 回答
  • 0 关注
  • 1320 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信