// 函数默认值
// 一、存在x参数
// let x = 1
// function fun(x,y=x) {
// // var x = 2
// x = 2 // 局部变量的作用域和参数的作用域不一致
// console.log(y) // 取参数作用域里的x
// }
// fun(3) // 3
// 二、不存在x参数
// let x = 1
// function fun(y=x) {
// // var x = 2
// x = 2
// console.log(y) // 传入的y,所以取y
// }
// fun(3) // 3
// // 三、不传参数,没有x参数
// let x = 1
// function fun(y =x) {
// x = 3
// console.log(y) // 没有传入参数,由于参数作用域里没有x,所以得从外面的作用域里面取x
// }
// fun() // 1
// 四、y是一个函数
// let x = 1
// function fun(x,y =()=> x=2) {
// var x = 3 // var创建的局部变量的作用域和参数的作用域(相当于let x)不一致
// y() // 第二个参数的x指向第一个参数的x
// debugger
// console.log(x)
// }
// fun(4) // 3
// // 伍、y是一个函数且局部变量不由var创建
// let x = 1
// function fun(x,y=()=> x=2) {
// x = 3 // 这个局部变量x就指向了传入的第一个参数x
// y() // 第二个参数里面的x也指向第一个参数x
// console.log(x) // 所以这里的x被重新赋值为2
// }
// fun(3) // 2
console