讨论/综合讨论/js函数默认值问题/
js函数默认值问题
 function fn(x = 1) { //函数使用默认值,就形成了一个自己的作用域,为什么在下一行会报错
    var x = 2; //let报错
    console.log(x);
}
 fn();
展开讨论
共 3 个讨论

这还真是一个不容易解释清楚的问题。想搞清楚,需要搞明白JS环境模型的具体规范和实现细节。

1

这没什么好奇怪的吧?
x是形参,就相当于声明了变量,var定义变量会做提升,写不写var 都一个样,但是 let 定义变量,在声明前是无法使用(形参里使用了x),肯定报错。
问题的本质 要搞清楚
1.形参的真正含义
2.let的基本使用规则

啊,你不使用默认值,用let不也会报错么。。。重复定义相同名字的变量