SOURCE

// 函数默认值

// 一、存在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 命令行工具 X clear

                    
>
console