es6 函数扩展和作用域

2020-05-11  本文已影响0人  琳媚儿

默认值 对象形式
参数变量默认声明的,不能用let const 再次声明

{
  
    function Student(x = "XXX", y = "18", z = "汉族") {
        this.x = x;
        this.y = y;
        this.z = z;
    }
    const Stu = new Student();
    console.log(Stu);

}
//Student { x: 'XXX', y: '18', z: '汉族' }

作用域:
一旦设置了参数默认值,函数进行声明初始化时,参数就会形成一个单独的作用域(context)。等到初始化结束,作用域就会消失,

首先找同一级,同一级没有就向上找
此例子中参数y的默认值等于变量x,调用函数 f 时,形成一个单独的作用域 ,在这个作用域里面默认值标量x 向第一个参数x,而不是全局变量x.
因为没给具体的值所以 y=undefinded

{
    
    let x = 1;
    function f(x,y = x) {
        console.log(y);
    }
    f()
//undefinded
}

在下面这个例子里面:变量x本身没有定义,所以指向外层的全局变量x 。函数调用时,函数体内部的局部变量x 影响不到默认值变量x

{
    //首先找同一级,同一级没有就向上找
    let x = 1;
    function f(y = x) {
        let x = 2;
        console.log((y));
    }
    f()
//1
}
上一篇 下一篇

猜你喜欢

热点阅读